タイトル説明:
関数を定義し、リンクリストのヘッドノードを入力し、リンクリストを反転し、反転したリンクリストのヘッドノードを出力します。
例:
入力: 1-> 2-> 3-> 4-> 5-> NULL 出力: 5-> 4-> 3-> 2-> 1-> NULL
思考分析:
リンクリスト内の各ノードをトラバースし、ヘッド補間法を使用して新しいリンクリストに挿入し、最後に新しいリンクリストに戻るのが最も簡単な方法です。
キーコード(つまり、ヘッドの挿入方法の形状を変更する):
head3 = head-> next; //最初に次のノードから反転する必要があるリンクリストxを保存しますyhead-
> next = head1; //ノードの次の ノードが新しいリンクリストになります
zhead1 = head; // zは新しいリンクリストの位置を再び
置き換えますhead = head3; //次のサイクルで元に戻す必要があるリンクリストに保存されたyを再割り当てします
コード:
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *head1 = NULL;
ListNode *head3 = NULL;
while(head)
{
head3 = head->next;
head ->next = head1;
head1= head;
head = head3;
}
return head1;
}
};