头结点是空指针吗?

本文分享了一个初学者在实现带有头结点的链表反转过程中的经验。通过具体代码示例,作者强调了头结点在链表操作中的特殊地位,避免了将其误认为空指针的常见误区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大佬肯定会觉得这很简单的问题。但对于小白,刚学链表的人来说,我觉得还是有一点迷惑性,并且容易忽视的问题的。
今天做反转链表的时候(这个链表有头结点),原来我做的都是没有头结点的,所以这次有点慌了,做了很久才做出来。然后最后成功之前的问题就是这个,把头结点输出了。
所以得出结论,头结点不是空指针
书上,网上都没有这种结论。估计是简单到不需要解释吧。好吧,我承认我菜。
加油。
顺便贴下我的代码吧:

LinkList reverse(LinkList& head) {
 LinkList nh = (LinkList)malloc(sizeof(List));
 nh->data = -1;
 LinkList prev = head->next;
 LinkList cu = prev->next;
 prev->next = NULL;
 head->next = NULL;
 while (cu !=NULL) {
  LinkList pn = cu->next;
  cu->next = prev;
  prev = cu;
  cu = pn;
 }
 nh->next =prev;
 return nh;
}

下面是我的输出代码:

void print(LinkList& Head) {
 int i;
 LinkList p;
 p = Head->next;
 printf("你的链表里面有:");
 while (p != NULL) {
  printf("%d ", p->data);
  p = p->next;
 }
 printf("\n");
}

如果你有新的想法或者优化欢迎提出啊。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值