原题描述:
输入一个链表,反转链表后,输出链表的所有元素。
思路:
头插法。这种经典的题目还是记录一下下,需要注意程序鲁棒性,即头结点为空或整个链表只有一个头结点的情况。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode*tail=pHead;
if(pHead==NULL) return NULL;
ListNode*p=pHead->next;
if(p==NULL) return pHead;
while(p!=NULL){
ListNode*q=p->next;
p->next=pHead;
pHead=p;
p=q;
}
tail->next=NULL;
return pHead;
}
};