【发布时间】:2014-03-14 04:13:01
【问题描述】:
我正在努力复习我的 C 语言,并且一直在复习数据结构和指针操作。有人可以向我解释为什么需要在这个链表反向函数中使用指向头指针的指针吗?由于 head 在函数中总是被解引用一次 (*head),我们不能只接受一个普通的 Node* 作为这个函数的参数并放弃解引用吗?提前致谢!
struct Node{
int key;
struct Node *next;
};
struct Node* reverse(struct Node** head){
Node *parent = *head;
Node *me = parent->next;
Node *child = me->next;
parent->next = NULL;
while(child) {
me->next = parent;
parent = me;
me = child;
child = child->next;
}
me->next = parent;
*head = me;
return *head;
}
【问题讨论】:
-
注意这段代码是C,不是C++
-
@Manu343726 这个概念对于 C++ 仍然完全有效。我认为您不应该删除 C++ 标签,因为 OP 明确表示他正在研究 C++
标签: c pointers linked-list