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