原题链接 反转链表
题目描述
输入一个链表,反转链表后,输出新链表的表头。
题目要求很简单,看一下解题思路。
解题思路:
- 利用next 备份head->next
- 修改head->next,让其指向新链表的头节点new_head
- 移动head与new_head
代码如下
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode* new_head = NULL;//指向新链表头节点的指针
while(pHead){
ListNode* next = pHead->next;//对应第一步
pHead->next = new_head;//对应第二步
new_head = pHead;//对应第三步
pHead = next;//对应第三步
}
return new_head;
}
};