gpt4 book ai didi

C 程序链表语法

转载 作者:行者123 更新时间:2023-11-30 20:26:03 27 4
gpt4 key购买 nike

这是一个在链表中添加节点的函数。

void addNode(struct Node *head, int n) {
Node *newNode = new Node;
newNode->data = n;
newNode->next = NULL;

Node *cur = head;
while(cur) {
if(cur->next == NULL) {
cur->next = newNode;
return;
}
cur = cur->next;
}
}

有人能告诉我 while 条件在这里的用途吗?我知道添加节点后,前一个节点的地址应该从 NULL 更改为下一个节点的地址。但令我困惑的是 while 条件如何工作。我的意思是“while (cur)”在这里意味着什么……括号内不应该有一个条件吗?

最佳答案

首先要做的事情。在 C 中使用 malloc()及其 friend 动态分配内存数据 block 。常见的习语是这样的:

Node *newNode = malloc(sizeof *newNode);

free() 不需要时,不要忘记释放它。标准功能。此外,您还应该始终检查 malloc() 返回的值,确定它是否成功。

现在回到你的问题:

while (cur) {
// ...
}

cur 被评估为表达式,您可以认为 true 和 false(更准确地说,0 被视为 false 和所有其他值,除了这些可从强制转换到另一种类型,例如 0.0 (double) 被视为 true)。将这个特定循环的条件写为:

实际上更具描述性(乍一看可能对您来说更直观)
while (cur != NULL) {
// ...
}

这两种形式在您的上下文中在语义上是相同的。

<小时/>

请注意,当 cur(即 head 参数)为空指针时,可能根本不会进入 while 循环。

关于C 程序链表语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26952179/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com