题目描述
输入一个链表,反转链表后,输出链表的所有元素
需要四个链表结点。一个指向原本的头结点pHead,一个指向新的头结点newhead,一个指向待翻转的结点p,一个指向待翻转结点的下一个结点q.
翻转链表的过程就是不断将结点p调整作为第一个结点的过程。
/*
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* newhead=pHead;
ListNode*p=pHead->next;
ListNode*q=p;
while(p!=NULL){
q=p->next;
p->next=newhead;
pHead->next=q;
newhead=p;
p=q;
}
return newhead;
}
};