反復アプローチを使用して二重にリンクされたリストを逆にしようとしていますが、元のリストのポインター スタイルの変更へのポインターを使用していなくても、元のリストが変更されている部分にぶつかります。
これは私が使用している逆関数でhead
あり、メインのように宣言されたローカル変数でNode* head = NULL;
あり、値のセットが既に入力されています。
Node* reverse_iterative(Node* head)
{
if(head == NULL || head->next == NULL)
return head;
Node *prev, *current=head, *temp;
while(current != NULL)
{
current->prev = current->next;
current->next = temp;
temp = current;
current = current->prev;
}
return temp;
}
これは私がメインでこれをどのように使用したかです:
Node* rev = NULL;
rev = reverse_iterative(head);
ここに私が得た出力があります:
original list: 15 <=>25 <=>35 <=>45 <=>55 <=>65 <=>75 <=>
making the list actually reverse: 75 <=>65 <=>55 <=>45 <=>35 <=>25 <=>15 <=>
after reversing, the original list now: 15 <=>
元のヘッド ノードが変更されていた部分を取得できませんでした。