単一のリンクリストを逆にするのは簡単です。次のコードは正常に機能します。
void reverse_list (SLINK list)
{
SLINK tmp = list->next;
NODE *cur = NULL;
list->next = NULL;
for (; NULL != tmp;)
{
cur = tmp;
tmp = tmp->next;
cur->next = list->next;
list->next = cur;
}
}
循環単一リンクリストを逆にする方法は?これに合わせてコードを調整します
SLINK reverse_list (SLINK rear)
{
NODE *tag = rear->next;
SLINK tmp = rear->next;
NODE *cur = NULL;
rear->next = NULL;
for (; NULL != tmp; )
{
cur = tmp;
tmp = tmp->next;
cur->next = rear;
rear->next = cur;
}
rear = tag;
return rear;
}
しかし、それは機能せず、この関数を実行した後、循環リストは非循環になるだろうと思いました。実際、それをダンプした後、それはまだ循環リストであることがわかりました。それは私がその中で間違った論理を作っているに違いありません、私に正しく見せてください。