一、题目描述
输入一个链表,反转链表后,输出链表的所有元素。
二、输入描述
输入一个链表
三、输出描述
返回逆转后的链表
四、牛客网提供的框架
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
}
};
五、解题思路
建一个新的链表头指针和一个中转结点指针。一个一个翻转原理链表结点的顺序。注意结点指针指向改变时的顺序,最好话图,这样逻辑比较清晰。
六、代码
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
ListNode *head, *temp;
head = pHead;
if(!head || !head->next) return head;
pHead = pHead->next;
head->next = NULL;
while(pHead)
{
temp = pHead->next;
pHead->next = head;
head = pHead;
pHead = temp;
}
return head;
}
};