gpt4 book ai didi

关于数据结构我们何时应该使用 "single-pointer"以及何时使用 "pointer-to-pointer"的困惑

转载 作者:太空宇宙 更新时间:2023-11-04 02:55:01 30 4
gpt4 key购买 nike

我一直在关注的学习数据结构的书使用“单指针”作为函数中的参数,这些函数在链表的不同位置添加新节点,例如在开始,在结束。同样在删除的情况下使用“pointer-to-pointer”。在所有这些情况下,函数原型(prototype)如下所示:

void appendordelete (struct node **, int );

但是在计算节点数,显示列表并在某个位置后添加的函数中,函数原型(prototype)变为:

void anyofthementionedfunctions (struct node *, int );

所以我很困惑什么时候应该在链表操作中使用单指针,什么时候使用指针到指针。请澄清。这些函数以典型和理想的方式工作,因此我不会发布这些冗长函数的代码。

最佳答案

在这种情况下,使用指向指针的指针,以便可以将指针更改为第一个节点。您保留一个指向列表开头的指针。如果您添加一个新项目,该指针可能需要更改,因为新项目可能会添加到列表的开头。

void insertAtBeginning(struct node **first_ptr,int value)
{
struct node *first = malloc(sizeof(struct node));
first->value = value;
first->next = *first_ptr;
*first_ptr = first;
}

void test()
{
struct node *first = 0;
insertAtBeginning(&first,5);
freeAll(first);
}

如果你正在做一些事情,比如搜索列表,就不需要改变指向第一个节点的指针,所以也不需要传递一个指向指针的指针。

但请注意,指向指针的指针还有其他用途。例如,您可以将矩阵维护为指向行指针数组的指针。

关于关于数据结构我们何时应该使用 "single-pointer"以及何时使用 "pointer-to-pointer"的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18732610/

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