链表一般我是这样写的: 供参考
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node *next;
};
int main(int argc, char *argv[])
{
struct node *p=NULL; //当前链表位置
struct node *head=NULL; //链表头
struct node *body=NULL; //链表结点
while(1)
{
int n;
fflush(stdin); //清空键盘缓冲区
scanf("%d",&n); //接受数据
if(n==-1) //如果输入为-1则表示结束输入
{ //n也可以在while()中判断,不过我认为这样写逻辑更清楚
break; //退出循环
}
body=(struct node*)malloc(sizeof(struct node));
body->data=n;
body->next=NULL;
if(head==NULL) //如果头为空则赋给头结点
{
head=body;
p=body; //并把当前链表位置指向头结点
}
else //头不为空
{
p->next=body;
p=body; //移动链表当前位置
}
}
p=head; //位置指向头
int i=1;
while(p!=NULL)
{
printf("\n链表%d的内容为:%d",i++,p->data);
p=p->next;
}
return 0;
}