#include<stdio.h>
#include<stdlib.h>
typedef struct linknode{
int data;
int num;
struct linknode *next;
}linklist;
linklist *initlist(){
linklist *head;
head=(linklist *)malloc(sizeof(linklist));
head->next=NULL;
return head;
}
void creatlist(linklist *head){
linklist *s;
int i;
for(i=0;i<3;i++){
s=(linklist*)malloc(sizeof(linklist) );
scanf("%d%d",&s->num,&s->data);
head->next=s;
head=s;
printf("num=%d,sum=%d\n",s->num,s->data);
}
}
int main(){
linklist *head;
head=initlist();
creatlist(head);
}
creatlist函数中连接结构体的时候不应该用head=s,head是标记节点,里面没有数据,让head=s以后,再去printf显示,显示的内容就是不确定的数据。
代码修改如下:(修改的地方有注释)
#include<stdio.h>
#include<stdlib.h>
typedef struct linknode {
int data;
int num;
struct linknode* next;
}linklist;
linklist* initlist() {
linklist* head;
head = (linklist*)malloc(sizeof(linklist));
head->next = NULL;
return head;
}
void creatlist(linklist* head) {
linklist* s;
int i;
for (i = 0; i < 3; i++) {
s = (linklist*)malloc(sizeof(linklist));
scanf("%d%d", &s->num, &s->data);
s->next = head->next; //添加这一句
head->next = s;
//head = s; //注释掉这一句
printf("num=%d,sum=%d\n", s->num, s->data);
}
}
int main() {
linklist* head;
head = initlist();
creatlist(head);
}