/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
/*
//使用先入後出棧實現
if(pHead == NULL || pHead -> next == NULL)
return pHead;
ListNode* p = pHead;
stack<ListNode* > s;
while(p -> next)
{
s.push(p);
p = p -> next;
}
ListNode* head = p;
while(!s.empty())
{
p -> next = s.top();
p = p -> next;
s.pop();
}
p -> next = NULL;
return head;
*/
//使用三個指針實現
if(pHead == NULL || pHead -> next == NULL)
return pHead;
ListNode* pPre = NULL;
ListNode* pNode = pHead;
ListNode* pNext = pHead -> next;
while(pNext != NULL)
{
pNode -> next = pPre;
pPre = pNode;
pNode = pNext;
pNext = pNode -> next;
}
pNode -> next = pPre;
return pNode;
}
};
單鏈表反轉
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.