leetcode206
Reverse Linked List
Reverse a singly linked list这个类型的题目我之前做过一次,那次我是用递归写的,但是这次我用递归写却超时了,,具体方法就是一头栽进链表最下面,然后返回,将每一层节点一个一个钩在后面即可。
由于超时我就老老实实的使用了栈来使用,还是比较简单,入栈再弹栈,不多说了。
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
stack<ListNode*> sl;
if (head == NULL)
return NULL;
while (head)
{
sl.push(head);
head = head->next;
}
ListNode * temp = sl.top();
head = temp;
sl.pop();
while (!sl.empty())
{
temp->next = sl.top();
temp = temp->next;
sl.pop();
}
temp->next = NULL;
return head;
}
};
.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
stack<ListNode*> sl;
if (head == NULL)
return NULL;
while (head)
{
sl.push(head);
head = head->next;
}
ListNode * temp = sl.top();
head = temp;
sl.pop();
while (!sl.empty())
{
temp->next = sl.top();
temp = temp->next;
sl.pop();
}
temp->next = NULL;
return head;
}
};