我正在用 C 语言处理链接列表,遇到了这个问题:我不明白以下陈述。这是我的链表结构
typedef struct node {
int value;
struct node *next;
} node;
这是我正在处理的代码:
void reverse(reverse **list)`void reverse(reverse **list)
{
struct node * prev = NULL;
struct node * next;
struct node * current = list[0];
while(current!= NULL)
{
next = current>next;
current>next = prev;
prev = current;
current = next ;
}
list[0] = prev;
}
列表[0]是什么意思?它是我链接列表的第一个元素吗?我知道我的问题看起来很愚蠢,但我在任何地方都找不到答案。
谢谢你的帮助。
list[0]
是指向第一个节点的指针,list
是指向该指针的指针。
list[0]
与*(list+0)
相同,与*(list)
或*list
相同。
它只是语法的不同形式,并不意味着list
指向数组。
指向第一个节点的指针的地址将传递给函数 reverse
。然后指向指针的指针被取消引用(*list
(,因此函数外部的原始指针被修改。如果不这样做,原始指针将不会更改,并且将不再指向列表的开头。