c语言遍历结构体,C语言结构体,主要后面那个循环不懂

"本文探讨了C语言中struct的定义和typedef的用法,特别关注了链表的创建和遍历。通过实例讲解如何定义并连接三个NODE结构体(a、b、c),强调了在设置链表末尾节点时,应使用NULL或0表示空指针,而非'',以避免逻辑混淆。同时,解释了指针遍历链表的工作原理,展示了如何通过while循环遍历并打印链表中的所有节点。"
摘要由CSDN通过智能技术生成

所以你应该已经弄懂了 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 节点链接而成的链表(对,这样的结构就叫“链表”)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值