|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
问题:以下代码输出为段错误。(输入逆位序的时候没有报错,但每当输出的时候就会报段错误,不管是简单的pirntf还是写的链表输出函数)
#include<stdio.h>
#include<stdlib.h>
typedef struct node
{
int data;
struct node *next;
/* data */
}list;
void Creatlist_L(list *L,int n){
//逆位序输入n个元素的值,建立带表头结点的单链性表L
L=(list *)malloc(sizeof(list));
L->next=NULL;
for(int i=n;i>0;i--){
list *p;
p=(list *)malloc(sizeof(list));
scanf("%d",&p->data);
p->next=L->next;L->next=p;
}
}
void Printout(list *h)
{ list *p,*q;
p=h->next;
while(p!=NULL)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
}
void main(){
list L;
Creatlist_L(&L,5);
Printout(&L);
}
malloc返回的是指针,
建议使用如下代码:
- #include<stdio.h>
- #include<stdlib.h>
- typedef struct node
- {
- int data;
- struct node *next;
- /* data */
- }list;
- void Creatlist_L(list *L,int n){
- //逆位序输入n个元素的值,建立带表头结点的单链性表L
-
- L->next=NULL;
- for(int i=n;i>0;i--){
- list *p;
- p=(list *)malloc(sizeof(list));
- scanf("%d",&p->data);
- p->next=L->next;L->next=p;
- }
- }
- void Printout(list *h)
- { list *p;
- p=h->next;
- while(p!=NULL)
- {
- printf("%d ",p->data);
- p=p->next;
- }
- printf("\n");
- }
- int main(){
- list* L=(list *)malloc(sizeof(list));
- Creatlist_L(L,5);
- Printout(L);
- return 0;
- }
复制代码
|
|