和之前发过的头插法一样,尾插法也是单链表输入数据的一种方式,我这里先给出代码,再进行图片的分析。
代码 如下:
#include <stdio.h>
#include <stdlib.h>
struct Node{
int info;
struct Node *next;
};
typedef struct Node *LinkList;
LinkList creatLink(LinkList L)
{
LinkList p1,p2;
p1 = p2 = (LinkList)malloc(sizeof(Node));
p2 = L;
scanf ("%d",&p1->info);
while (p1->info)//输入为0时停止
{
p2->next = p1;
p2 = p1;
p1 = (LinkList)malloc(sizeof(Node));
scanf ("%d",&p1->info);
}
p2->next = NULL;
return L;//这里是返回L注意了,一定是L。不是p1也不是p2,p1,p2只是临时采用的结构体指针变量。
}
int main()
{
LinkList L;
L = (LinkList)malloc(sizeof(Node));
L = creatLink(L);
while(L)
{
printf ("%d",L->next->info);//因为有头结点,所以要避免开图结点的不存在的值
L = L->next;
}
}
图片如下: