gpt4 book ai didi

c - 从最后一个节点遍历指针到第一个节点

转载 作者:行者123 更新时间:2023-11-30 19:41:51 26 4
gpt4 key购买 nike

bn_ptr drive_temp(bn_ptr head,bn_ptr temp,bn_ptr current)
{

while(temp->next!=current)
{
temp=temp->next;
current=temp;
}
temp=head;

return current;
}

我有链表,“头”指针保存第一个节点,“当前”指针保存最后一个节点,我想将“当前”一个接一个地带到头,所以我编写了这个函数,但在调试时它给出了段错误程序

最佳答案

temp->next!=current永远不会是真的,除非 temp==temp->next .

试试这个:

bn_ptr drive_temp(bn_ptr head,bn_ptr temp,bn_ptr current)
{

while(temp->next!=current)
{
temp=temp->next;
}
current=temp; /* get this out of the loop */
temp=head;

return current;
}

或者更简化:

bn_ptr drive_temp(bn_ptr head,bn_ptr temp,bn_ptr current)
{
(void)head; /* head isn't used, so put this to avoid warning */
while(temp->next!=current)
{
temp=temp->next;
}
/* current and temp will be lost, so assigning to them here is useless */

return temp;
}

为了更安全,请确保 temp不是NULL以避免出现 current 时出现运行时错误无效。

bn_ptr drive_temp(bn_ptr head,bn_ptr temp,bn_ptr current)
{
(void)head; /* head isn't used, so put this to avoid warning */
while(temp != NULL && temp->next!=current)
{
temp=temp->next;
}

/* temp will be the previous node of current or NULL */
return temp;
}

也许你想要这个:

bn_ptr drive_temp(bn_ptr head,bn_ptr current) /* remove temp from the arguments */
{
bn_ptr temp = head;
while(temp != NULL && temp->next!=current)
{
temp=temp->next;
}

/* temp will be the previous node of current or NULL */
return temp;
}

关于c - 从最后一个节点遍历指针到第一个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33127075/

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