输入一个链表,反转链表后,输出新链表的表头。
思路
首先把p的下一个节点指向t节点,接着t节点等于p节点,再将p节点等于它的后一个节点q,q指向它的后一个节点
/*
struct ListNode {
int val;
struct ListNode next;
ListNode(int x) :
val(x), next(NULL) {
}
};/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(pHead==nullptr || pHead->next == nullptr)
return pHead;
ListNode *t=pHead;
ListNode *p=t->next;
ListNode *q=p->next;
while(q!=NULL){
p->next=t;
t=p;
p=q;
q=q->next;
}
p->next=t;
pHead->next=nullptr;
return p;
}
};