我目前正在解决列表和函数的求和问题,并且我遇到了这个问题,即将一个链表逆时针旋转k。 这里是相同旋转链接列表C
void rotate_k(struct list *node,int k)
{
int count=0;
struct list *knode,*ptr=node;
while(ptr!=NULL && count < k)
{
ptr=ptr->next;
count++;
}
knode=ptr;
while(ptr->next!=NULL)
{
ptr=ptr->next;
}
ptr->next =node;
node=knode->next;
knode->next=NULL;
}
代码比方说,如果输入是1-> 2-> 3-> 4-> 5-> 6且k = 4。输出应该是5-> 6-> 1-> 2-> 3-> 4,但代码给出输出1-> 2-> 3-> 4-> 5。 需要帮助:)
什么也调试器说什么? – pm100
认为需要对列表做些什么。找到第k个元素;使它成为新的头部,并使旧的尾巴成为老头。我没有看到代码做最后2部分。同时返回新的头 – pm100
第二个while循环进入列表末尾,ptr-> next =节点使尾部指向旧头。 node = knode-> next使5个新列表的头部 – user2714823