チェーンテーブル反転(C++版)
タイトル:
チェーンテーブルの反転アルゴリズムを実現し,アルゴリズムのロバスト性に注意する.
注意:
チェーンテーブルノードの定義は次のとおりです.
struct ListNode { int val; struct ListNode *next; ListNode(int x) :val(x), next(NULL) {} };
直接コード:
チェーンテーブルの反転アルゴリズムを実現し,アルゴリズムのロバスト性に注意する.
注意:
チェーンテーブルノードの定義は次のとおりです.
struct ListNode { int val; struct ListNode *next; ListNode(int x) :val(x), next(NULL) {} };
直接コード:
ListNode* ReverseList(ListNode* pHead)
{
// 。
if(pHead == NULL || pHead->next == NULL)
{
return pHead;
}
// 3
// p
// q
// r
ListNode *p = pHead, *q = pHead->next, *r = pHead;
p->next = NULL;
p = q;
while(p)
{
q = p->next; //
p->next = r; //
r = p; //
p = q; //
}
return r;
}