{
SLIST *head,*tail,*cnew
head=NULL
int num
printf("输入数据(以-1结束):")
while(1)
{
scanf("%d",&num)
if(num==-1)//输入为-1表示输入结束
break
cnew=(SLIST*)malloc(sizeof(SLIST))
cnew->data=num
cnew->next=NULL
if(head==NULL)//若为空则将头节点指向新节点
head=cnew
else
tail->next=cnew//将当前节点的next指向新的节点
tail=cnew
}
return head
}
void outlist(SLIST *h)
{
/*这里输出链表中各个数据*/
SLIST *p
if(h==NULL)
{
printf("链表为空,没有数据\n")
return
}
printf("\n-----链表的数据元素------\n")
for(p=hp!=NULLp=p->next)
printf("%d ",p->data)
printf("\n")
}
不知道 你为啥问两遍
实测编译通过 望采纳
简单说来,就是通过指针指向,把两个结构体连接起来。比如定义下面这个结构体struct node
{
int data
struct node *next
}
可以看到结构体里面定义了一个自身类型的指针,通过让指针指向另外一个结构体,我们就能通过结构体里面的next变量访问下个结构体里面的内容,而通过下一个结构体,同样可以通过下一个结构体的next指向,找到下一个这种类型的结构体,这样就形成了所谓的链表。