#include <stdio.h>
struct node
{
int data;
struct node *next;
} ;
typedef struct node NODE;
main()
{
NODE a,b,c,*h,*p;
a.data=10;b.data=20;c.data=30;
h=&a;
a.next=&b;b.next=&c;c.next='\0';
p=h;
printf("%d\n",p->data);
while(p)
{
printf("%d",p->data);
p=p->next;
printf("\n");
}
}
3 回答
onemoo
TA贡献883条经验 获得超454个赞
所以你应该已经弄懂了 struct 的定义和 typedef 是怎么回事吧。
那么,在 main 中你定义了 a、b、c 这三个 NODE,并且让 a 链到 b,b 链到 c,c 的 next 指向“空”
虽然运行起来没有错,但额外说一下:c.next='\0' 这里你把 next 赋值为 '\0',这是“空字符”。而这里在逻辑上你需要的是让 next 为“空指针”(也就是让 next 的值为 0),那么直接赋值 0 或 NULL 就可以了。 因为 '\0' 的值也是 0,所以这里没有运行错误,但这么写逻辑上就有些混乱了。
h 和 p 是指针,h 指向 a,而 p 一开始也指向 a。
while 循环的条件是 p 不为空指针。那么一开始 p 指向 a,所以进入循环:
首先打印 p 指向的节点的 data 值。
然后 p = p -> next,这句就是让 p 指向下一个节点。
如果某次循环时 p 已经指向最后一个节点了(这例子中就是 c),那么 p = p -> next 之后 p 就是空指针了(因为 c 的 next 是空指针,表明 c 为最后一个节点),再进入 while 时 p 为空指针,所以会结束循环。
那么整个 while 就是利用 p 指针,遍历了一遍 a b c 节点链接而成的链表(对,这样的结构就叫“链表”)
- 3 回答
- 0 关注
- 1524 浏览
添加回答
举报
0/150
提交
取消