【发布时间】:2018-07-04 22:27:16
【问题描述】:
这是我在 C 语言中遇到的一个问题。 所以,我们有一个有两个参数的函数:
- 结构列表** ptrptr
- int K
K 表示我们必须从列表的末尾移动到开头的节点数,如下所示:
我知道如何移动一个元素,但我无法使用 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的任何值,您只需要跟踪2个节点->范围的开始和结束节点。 -
你快完成了。您需要找到列表的第 K 个最后一个节点,而不是查找列表的最后一个节点。
-
如果你能做到一个,而不是一次尝试所有
K,尝试一次做一个K。然后考虑一次尝试所有K。
标签: c algorithm sorting linked-list nodes