赞
踩
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode(int x) : val(x), next(NULL) {}
- * };
- */
- class Solution {
- public:
- vector<int> printListReversingly(ListNode* head) {
- vector<int> res;
- while(head)
- {
- res.push_back(head->val);
- head = head->next;
- }
- reverse(res.begin(), res.end());
- //return vector<int>(res.rbegin(), res.rend());
- return res;
- }
- };
(2)剑指Offer 在O(1)时间删除链表结点(假设链表一定存在,并且该节点一定不是尾节点。)
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode(int x) : val(x), next(NULL) {}
- * };
- */
- class Solution {
- public:
- void deleteNode(ListNode* node) {
- node->val = node->next->val;
- node->next = node->next->next;
- }
- };
(3)剑指Offer 链表中倒数第k个节点
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode(int x) : val(x), next(NULL) {}
- * };
- */
- class Solution {
- public:
- ListNode* findKthToTail(ListNode* head, int k) {
- int n = 0;
- for (ListNode* p = head; p; p = p->next) n ++ ;
- if(k > n) return NULL;
- ListNode* p = head;
- for (int i = 0; i < n - k; i ++ ) p = p->next;
- return p;
- }
- };
(4)剑指Offer, 语法题, Hulu面试题 反转链表
- /**
- * 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) {
- if(!head || !head->next) return head;
- ListNode* a = head, *b = a->next;
- while(b)
- {
- ListNode *c = b->next;
- b->next = a;
- a = b;
- b = c;
- }
- head->next = NULL;
- return a;
- }
- };
(5)剑指Offer 合并两个排序的链表
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode(int x) : val(x), next(NULL) {}
- * };
- */
- class Solution {
- public:
- ListNode* merge(ListNode* l1, ListNode* l2) {
- ListNode* dummy = new ListNode(-1);
- ListNode* tail = dummy;
-
- while(l1 && l2)
- {
- if(l1->val <= l2->val)
- {
- tail = tail->next = l1;
- l1 = l1->next;
- }
- else
- {
- tail = tail->next = l2;
- l2 = l2->next;
- }
- }
- if(l1) tail->next = l1;
- if(l2) tail->next = l2;
- return dummy->next;
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。