C语言 单链表的错误

来源:百度知道 编辑:UC知道 时间:2024/05/24 03:09:14
#include<stdio.h>
#include<stdlib.h>

typedef struct student
{
int age;
}STU;

typedef struct _NODE
{
STU data;
struct _NODE *next;
}NODE;

typedef struct
{
NODE *head;
NODE *last;
int counts;
}LINK;

main()
{
NODE *temp,*node;
LINK *link;
int i;
STU info;

link=(LINK *)malloc(sizeof(LINK));

for(i=0;i<3;i++)
{
info.age=i;
node=(NODE *)malloc(sizeof(NODE));
node->data=info;
if(link->head==NULL)
{
link->head=node;
link->last=node;
}
else
{
link->last->next=node;
link->last=node;
}

link->last->next=NULL;

}

temp=link->head;

while(temp!=NULL)
{
printf("%d\t",temp->data.age);
temp=temp->next;

我给你改好了,你在初始化的时候 没有初始化head和last的next值!

#include<stdio.h>
#include<stdlib.h>

typedef struct student
{
int age;
}STU;

typedef struct _NODE
{
STU data;
struct _NODE *next;
}NODE;

typedef struct
{
NODE *head;
NODE *last;
int counts;
}LINK;

void main()
{
NODE *temp,*node;
LINK *link;
int i;
STU info;

link=(LINK *)malloc(sizeof(LINK));
link->head = NULL;
link->last = NULL;

for(i=0;i<3;i++)
{
info.age= i+20;
node=(NODE *)malloc(sizeof(NODE));
node->data = info;
if(link->head==NULL)
{
link->head=node;
link->last=node;
}
else
{
link->last->next=node;
link->last=node;
}

link->last->next=NULL;
}