链表
文章平均质量分 69
jiyanfeng1
喜欢算法和编程的工科男
展开
-
单链表的快速排序(转)
类似问题:荷兰国旗问题 单链表的快速排序和数组的快速排序在基本细想上是一致的,以从小到大来排序单链表为例,都是选择一个支点,然后把小于支点的元素放到左边,把大于支点的元素放到右边。 但是,由于单链表不能像数组那样随机存储,和数组的快排序相比较,还是有一些需要注意的细节:支点的选取,由于不能随机访问第K个元素,因此每次选择支点时可以取待排序那部分链表的头指针。遍历转载 2012-09-25 07:04:47 · 971 阅读 · 0 评论 -
[LeetCode] Linked List Cycle II, Solution
Given a linked list, return the node where the cycle begins. If there is no cycle, return null.Follow up:Can you solve it without using extra space?[Thoughts]首先,比较直观的是,先使用Linked List Cyc原创 2014-09-22 08:08:35 · 586 阅读 · 0 评论 -
[LeetCode] Partition List 分割单链表
给你一个单链表和一个整数x,调整单链表的元素的位置,使得前半部分的值小于x,后半部分的值大于x。下面的算法的思路和单链表快速排序的思路是一样的。ListNode *partition(ListNode *head, int x) { ListNode* slow = head; ListNode* fast = head; while原创 2014-12-10 05:57:27 · 741 阅读 · 0 评论 -
[LeetCode] 重排链表 reorder linked list
Given a singly linked list L: L0→L1→…→Ln-1→Ln,reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→…You must do this in-place without altering the nodes' values.For example,Given {1,2,3,4}, reorder it t原创 2014-12-02 05:16:05 · 775 阅读 · 0 评论 -
[LeetCode] Insertion Sort List
Sort a linked list using insertion sort./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * };原创 2015-02-09 12:06:31 · 459 阅读 · 0 评论 -
[LeetCode] 翻转子链表 reverse linked list
Reverse a linked list from position m to n. Do it in-place and in one-pass. For example: Given 1->2->3->4->5->NULL, m = 2 and n = 4, return 1->4->3->2->5->NULL. Note: Given m, n satisfy the follow原创 2014-12-08 00:50:20 · 596 阅读 · 0 评论 -
XOR linked list 异或链表
异或链表是实现双链表的一种方法,可以降低空间复杂度,每个节点只有一个指针域,用于存放前一个节点地址和后一个节点地址的异或(如果XOR链表只有一个节点,那么这个节点的指针域便是NULL xor NULL =NULL)。下面的代码实现来XOR链表的插入函数。该插入函数将一个值插入到链表的前端。代码如下:struct LNode{ int data; LNode* pnx; //原创 2013-02-25 04:28:41 · 3379 阅读 · 2 评论 -
[LeetCode] Reverse Nodes in k-Group
Given a linked list, reverse the nodes of a linked list k at a time and return its modified list. If the number of nodes is not a multiple of k then left-out nodes in the end should remain as it is. Y原创 2015-02-09 13:48:47 · 587 阅读 · 0 评论 -
Insert into a sorted circular linked list 环状链表 插入节点
给定一个排好序的环状链表,将一个节点插入到环状链表中。例如,给定如下的环状链表,将数字7插入到链表中,得到如下的环状链表。原创 2015-02-10 04:55:54 · 1045 阅读 · 0 评论 -
[LeetCode] Swap Nodes in Pairs
Given a linked list, swap every two adjacent nodes and return its head. For example, given 1->2->3->4, you should return the list as 2->1->4->3. Your algorithm should use only constant space. You may原创 2015-02-10 00:11:17 · 517 阅读 · 0 评论 -
[LeetCode] Rotate Linked List
Given a list, rotate the list to the right by k places, where k is non-negative. For example: Given 1->2->3->4->5->NULL and k = 2, return 4->5->1->2->3->NULL.Analysis:The idea is to get the whole转载 2014-12-10 06:15:40 · 544 阅读 · 0 评论 -
[LeetCode] Merge Two Sorted Lists 归并两个排好序的单链表
归并两个排好序的单链表给定两个排过序的单链表,头指针分别是head1和head2,把他们合并成一个排序的单链表。思路:用递归的方法,把单链表head1中的节点,依次插入head2中。#include #include #include #define MAX 256using namespace std;struct Node{ int data;原创 2014-11-26 01:21:42 · 524 阅读 · 0 评论 -
[LeetCode] Reverse Linked List 翻转链表
给你一个单链表,写一段代码,翻转该链表。代码如下: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class So...原创 2013-02-15 01:43:24 · 483 阅读 · 0 评论 -
合并两个有序链表
给你两个有序的单链表,如 5->10->15 和 2->3->20,要求把它们合并成一个单链表:2->3->5->10->15->20。用递归的方法来做:struct LNode{ int data; LNode* next; LNode(int dat, LNode* nex = NULL): data(dat), next(nex) {}};LNode* Sorted原创 2013-02-25 05:01:00 · 668 阅读 · 0 评论 -
链表:删除一个节点,如果这个节点的右边的节点更大
Delete nodes which have a greater value on right sideExamples:a) The list 12->15->10->11->5->6->2->3->NULL should be changed to 15->11->6->3->NULL. Note that 12, 10, 5 and 2 have been deleted转载 2013-02-25 05:55:36 · 588 阅读 · 0 评论 -
把链表中的奇偶数分开
Segregate even and odd nodes in a Linked List给你一个单链表,修改此单链表,使得前面是偶数,后面是奇数。偶数间的相对顺序不变,奇数间的相对顺序不变。返回修改后的单链表的头节点。例如:Input: 17->15->8->12->10->5->4->1->7->6->NULLOutput: 8->12->10->4->6->17->15-原创 2013-02-25 06:06:42 · 4909 阅读 · 0 评论 -
把两个链表加起来 add two numbers represented by two linked lists
把两个链表加起来 add two numbers represented by two linked lists如果从链表的头到尾是数字的低位到高位的方向,这道题非常好做,详见:http://www.geeksforgeeks.org/add-two-numbers-represented-by-linked-lists/。如果从链表的头到尾是数字的高位到低位的方向,那么可以先把这两个链表原创 2014-11-27 09:40:57 · 549 阅读 · 0 评论 -
复制双链表 Copy a linked list with next and arbit pointer
复制双链表 Copy a linked list with next and arbit pointer有一个双链表,这个shuanglian翻译 2014-11-24 03:39:06 · 802 阅读 · 0 评论 -
[LeetCode] merge sort for linked list
Merge sort is often preferred for sorting a linked list. The slow random-access performance of a linked list makes some other algorithms (such as quicksort) perform poorly, and others (such as heaps转载 2013-02-25 05:23:59 · 1501 阅读 · 0 评论 -
[LeetCode] Remove Duplicates from Sorted List II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. For example, given 1->2->3->3->4->4->5, return 1->2->5. Given 1->1->1->2原创 2014-12-22 16:14:56 · 674 阅读 · 0 评论 -
[LeetCode] Remove Duplicates from Sorted Linked List 从排序链表中去掉重复值
Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3.代码很简单,用两个指针,slow和fast,slow原创 2014-12-08 08:21:42 · 872 阅读 · 0 评论 -
[LeetCode] Remove Nth Node From List 删除链表的第N个节点
Given a linked list, remove the nth node from the end of list and return its head. For example, given linked list: 1->2->3->4->5, and n = 2. After removing the second node from the end, the linked lis原创 2015-02-10 03:27:45 · 538 阅读 · 0 评论