gpt4 book ai didi

c - 链接列表指针的位置(索引)问题

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

Status ListDelete(LinkList *L, int i, int *e)
{
int j=0;
LinkList p=L,q;
while(p->next && j > i-1)
{
p = p->next;
j++;
}

if(!p->next||j>i-1)
return ERROR;
q=p->next;
p->next=q->next;
*e=q->data;
free(q);
return OK;
}

代码是正确的,但我需要一些关于指针p位置变化的解释。

我的问题是:
如果我想删除第二个 (i=2)链表中的元素,然后是 while() 中的条件第一次应该是(j<i-1 => 0<2-1) ,所以实际上while只执行了一次,但是while循环中的p已经指向了第二个元素,所以我相信q->next应该指向第三个元素。

当我执行代码时,它运行良好,如果输入 i = 2 ,它会删除第二个元素,但在我的理解中,它应该删除第三个元素。为什么?

最佳答案

循环条件的第二部分告诉代码在删除之前循环必须跳过多少个元素。当你需要删除第二个元素时,你需要跳过它前面的一个元素。一般来说,要删除第N个元素,需要跳过N-1个元素。

关于c - 链接列表指针的位置(索引)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15711064/

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