剑指Offer 反转链表

时间:2024-06-05 23:37:02

题目描述

输入一个链表,反转链表后,输出链表的所有元素。
思路:
法1:用栈,压栈出栈
法2:头插法(有递归非递归2中)
AC代码:
 /*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* ReverseList(ListNode* pHead) {
if(pHead==NULL||pHead->next == NULL)
{
return pHead;
} ListNode *q=pHead;
ListNode *newHead; stack<ListNode*> stack1; while(q->next!=NULL)
{
stack1.push(q);
q=q->next;
}
newHead = q; while(!stack1.empty())
{
q->next=stack1.top();
q=q->next;
stack1.pop();
}
q->next=NULL;
return newHead; //返回新的头节点
}
};