gpt4 book ai didi

c - 如何在链表中保存和获取下一个和上一个数据?

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

美好的一天。任何人都知道如何在 c 中使用链表获取下一个和上一个数据?在我获得链接列表中的先前数据后,我得到 NULL 值,如果我移动到右键(传递我想要获得的索引),则获取下一个数据没有错但是如果我将我的键移到左边我得到NULL 值,即使我再次传递索引并获取我需要的数据。这是我的示例添加和获取链表代码。

typedef struct samp{
int idx;
char *name;
struct samp *next;
}sampLink;



sampLink *head=NULL,tail=NULL,test;
int addList(int idx,char *name){
sampLink *tryi=NULL;
tryi=(sampLink*)calloc(1,sizeof(sampLink));
tryi->idx=idx;
tryi->name=strdup(name);
tryi->next=NULL;

if(head==NULL){
head=tryi;
tail=tryi;
}else{
tail->next=tryi;
tail=tail->next;
}
return 0;
}

sampLink *getList(int idx){
do{
if(idx==head->idx){
return head;
}
head=head->next;
}while(head!=NULL);
return head;
}

为右移

void moveRight(){
int i=0;
test=getList(i);
i++;
}

左边只有减号。希望有人能帮助我。谢谢

最佳答案

如果您真的想实现左/右移动,那么只添加一个减号是行不通的。您需要实现一个双向链表,以便能够在两个方向上移动。

向左移动时可能会返回 NULL,因为向右移动时会更改头指针,一旦更改头指针就会丢失一些节点,因为您的搜索不是双向的,因为它不是双向链表,因此返回结束节点(NULL)。

关于c - 如何在链表中保存和获取下一个和上一个数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10794471/

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