gpt4 book ai didi

c - 将 N 个链表节点移到前面 (C)

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:40:19 25 4
gpt4 key购买 nike

这是我在 C 中遇到的一个问题。所以,我们有一个带有两个参数的函数:

  1. 结构列表** ptrptr
  2. int K

K 表示我们必须从列表的末尾移到开头的节点数,如下所示:

enter image description here

我知道如何移动一个元素,但我无法绕过使用 tmps 来解决 K 个节点。

如果有任何建议,我将不胜感激。这是一个节点的代码。

void Shift(node **head){
node *prev;
node *curr = *head;
while(curr != NULL && curr->next != NULL) {
prev = curr;
curr = curr->next;
}
prev->next = NULL;
curr->next = *head;
*head = curr;

}

最佳答案

您可以在单个“步骤”中移动一个完整的 K 节点链。假设列表由N元素组成,nmk是位置N-K的节点,e是列表的最后一个节点。那么代码将是...

e->next = *head;
*head = nmk->next;
nmk->next = NULL;

现在的技巧是找到节点 nmk,但如果您不介意,我就把这个留给您了:-)并且不要忘记检查极端情况,例如空列表、N==K、....

关于c - 将 N 个链表节点移到前面 (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48446829/

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