私は自分のリストクラスを実装しようとしていますが、私のリストの一部を逆転させるのに問題があります。二重リンクリストの逆の部分
Revelantコード:
void List<T>::reverse(ListNode * & head, ListNode * & tail)
{
ListNode* t;
ListNode* curr = head;
ListNode * funtail = tail;
int stop=0;
while(stop==0)
{
if(curr==funtail)
{
stop = 1;
}
t = curr->prev;
curr->prev = curr->next;
curr->next = t;
curr = curr->prev;
}
t = tail;
tail = head;
head = t;
}
私はリスト
1 2 3 4 5 6 7 8 9 10
で開始し、私は1と4へのポインタを渡す場合、リストは
4 3 2 1 5 6 7 8 9 10
のようになります。問題は、私のリストはちょうど
として戻ることです1
残りのリストは失われています(私のグローバルテール変数からはまだアクセスできます)。何か案は?私の方法は間違っていますか?
'while'ループの最初の反復で、' curr-> prev'を 't'に割り当てます。前のノードがないところで頭を逆にし始めるとどうなりますか? – jrok