剑指Offer——反转链表
2017-07-01 10:54
399 查看
Question
输入一个链表,反转链表后,输出链表的所有元素。Solution
如果空间复杂度要求为O(1)的话,可以考虑用三个指针来进行反转如果没有空间复杂度限制的话,可以考虑用一个栈,将节点全部push到栈用,然后再生成新的链表。
Code
/* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: // 就地完成反转 ListNode* ReverseList(ListNode* pHead) { ListNode* pre = NULL; ListNode* head = pHead; ListNode* next = head; while (next) { next = head->next; head->next = pre; pre = head; if (next) head = next; } return head; } // O(n)的空间 ListNode* ReverseList(ListNode* pHead) { if (pHead == NULL) return NULL; stack<ListNode*> stack1; ListNode* tmp = pHead; while (tmp) { stack1.push(tmp); tmp = tmp->next; } ListNode* first = new ListNode(-1); pHead = first; while (!stack1.empty()) { ListNode* current = stack1.top(); stack1.pop(); first->next = current; first = current; } first->next = NULL; return pHead->next; } };
相关文章推荐
- 《剑指offer》编程题java实现(十三):反转链表
- 反转链表--《剑指offer》
- 剑指offer-反转链表
- JAVA实现链表的反转(《剑指offer》)
- 剑指offer面试题24:反转链表-java
- [剑指offer学习心得]之:反转链表
- 剑指offer-第三章高质量代码(反转链表)
- 《剑指Offer》学习笔记——反转链表
- 牛客《剑指Offer》 反转链表
- 剑指Offer系列---(18)反转链表(递归与非递归实现)
- 剑指Offer(Java版):反转链表
- 《剑指Offer》学习笔记--面试题16:反转链表
- 剑指offer:反转链表
- 《剑指offer》--- 链表中的倒数第k个结点 和 反转链表
- 《剑指offer》——反转链表
- 反转链表(剑指offer)
- 剑指offer面试题16:反转链表
- JAVA实现链表的反转(《剑指offer》)
- 《剑指offer》面试题16—反转链表
- 剑指Offer——(15)反转链表