gpt4 book ai didi

c - 添加一个元素到链表的末尾

转载 作者:太空宇宙 更新时间:2023-11-04 08:31:39 25 4
gpt4 key购买 nike

void    AddToEnd(double data ,int x, int y, element **list){
element *node, *tmp;
node=*list;
if (data != 0)
{
tmp=malloc(sizeof(element));
tmp->value=data;
tmp->x_element=x;
tmp->y_element=y;
tmp->next=NULL;
if (node !=NULL) {
while (node->next != NULL) node=node->next;
node->next=tmp;
}
else
{
*list=tmp;
}
}

如何摆脱这个“if (node !=NULL)/else”?我想将一个元素添加到列表的末尾,但没有我用来添加第一个元素的 if/else。

最佳答案

您可以添加一层间接并保留指向当前节点的指针。通过这个指针修改链表。初始值是头部的地址。之后,它持有前一个节点的next字段的地址。

void AddToEnd(double data, int x, int y, element **list)
{
if (data != 0) {
element *tmp = malloc(sizeof(*tmp));

tmp->value = data;
tmp->x_element = x;
tmp->y_element = y;
tmp->next = NULL;

while (*list) {
list = &(*list)->next;
}

*list = tmp;
}
}

此代码在列表为空时更新列表头。

关于c - 添加一个元素到链表的末尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28083965/

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