题目描述
输入一个链表,反转链表后,输出链表的所有元素。
解题思路
新建两个空链表p和pnext;当前元素为pHead;
- 先把下一个元素存下来,存为pnext;
- 将下一个元素变为p;
- 将当前元素pHead(已经反转)赋给p;
- 将pnext(即原先未反转的下一个元素)赋给pHead;
- 重复1~4,直到pHead为最后一个元素(指向nullptr);
- p即为反转链表
代码
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode *p=nullptr;
ListNode *pnext=nullptr;
while(pHead){
pnext=pHead->next;
pHead->next=p;
p=pHead;
pHead=pnext;
}
return p;
}
};