题目描述
输入一个链表,反转链表后,输出新链表的表头。
链表结构
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
思路:遍历结点,将原链表头结点当尾结点,依次向前改变指针方向
代码:
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode *pre = NULL; //前一个结点
ListNode *p = pHead; //当前结点
ListNode *nxt = NULL; //下一个结点
while(p){
nxt = p->next;
p->next = pre;
pre = p;
p = nxt;
}
return pre;
}
};