gpt4 book ai didi

C:更改列表的下一个指针

转载 作者:行者123 更新时间:2023-11-30 16:38:44 24 4
gpt4 key购买 nike

给定 C 中的列表:

struct listNode
{
int val;
struct listNode *nextPtr;
};
typedef struct listNode ListNode;
typedef ListNode *ListNodePtr;

如果,在向列表中插入新项目的过程中,给定的列表由指向最后一项的指针(*sPtr)组成,因此是一个新节点,我想修改该指针 *sPtr使其指向新节点,然后将新节点设为最后一个,下面这样写对吗?

ListNodePtr newPtr;    
newPtr=malloc(sizeof(ListNode));
if(newPtr!=NULL)
{
newPtr->val=whatever;
newPtr->nextPtr=NULL;
*sPtr->nextPtr=newPtr;
*sPtr=*sPtr->nextPtr;
}

最佳答案

在解除引用之前,您必须检查最后一项 (sPtr) 是否为空,因为列表一开始是空的(假设未使用虚拟根节点)

您还可以设置最后一项,如下所示 *sPtr = newPtr 而不是 *sPtr = *sPtr->nextPtr。 Next 指针是 newPtr,因此将其分配给 newPtr 将使事情变得更清晰并且不易出错

更新版本为:

ListNodePtr newPtr;    
if((newPtr = malloc(sizeof(ListNode)))) {
newPtr->val = whatever;
newPtr->nextPtr = NULL;

if (*sPtr)
(*sPtr)->nextPtr = newPtr;

*sPtr = newPtr;
}

关于C:更改列表的下一个指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47380814/

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