【 声明:版权所有,转载请标明出处,请勿用于商业用途。 联系信箱:libin493073668@sina.com】
题目描述
输入一个链表,反转链表后,输出链表的所有元素。
思路
在反转链表的时候,我们很容易想到让当前结点的next指向前一个结点,但是这样做了之后这个节点原本next所指的结点就找不回了,所以每次我们都要保存新的前一结点,当前结点和下一结点三个指针,只要下一结点为空,那么我们就到了原本结点的尾部,这时正是新链表的头部
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution
{
public:
ListNode* ReverseList(ListNode* head)
{
if(head==nullptr)
return nullptr;
ListNode *newlist = nullptr;
ListNode *cur = head;
ListNode *pre = nullptr;
while(cur!=nullptr)
{
ListNode *pnext = cur->next;
if(pnext == nullptr)
newlist = cur;
cur->next = pre;
pre = cur;
cur = pnext;
}
return newlist;
}
};