我目前正在解決列表和函數的求和問題,並且我遇到了這個問題,即將一個鏈表逆時針旋轉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