链表输出怎么只输出最后一个???

void printf_node_fun(ListLink head)
30 {

31 ListLink p = head;
32 while(1)
33 {
34 if(p == NULL)
35 {

36 printf("p is NULL");
37 break;
38 }
39 printf("%s\n",p->data);
40 p =p->link;
41 }
42 }

ListLink 是这一个 typedef struct node *ListLink

每次输出都只输出最后输入的那个而已,是怎么回事??

这代码没有什么问题,是不是你插入或者建立链表的代码有问题。

void create_node_fun(ListLink *head,int len)
12 {
13 ListLink *ptail = head;
14 ListLink p;
15 for(int i = 0; i < len;i++)
16 {
17 p = (ListLink)malloc(sizeof(NODE));
18 if(p == NULL)
19 {
20 printf("p == NULL\n");
21 exit(-1);
22 }
23 scanf("%s",p->data);
24 (*ptail)->link = p->link;
25 p->link = NULL;
26 *ptail = p;
27 }
28 }

24 - 26 行 实现有问题吧

(*ptail)->link=p;
p->link=null;