链表插入排序
2017-03-27 22:37
183 查看
描述:用插入排序对链表排序
样例:Given 1->3->2->0->null, return 0->1->2->3->null
解题思路:另外创造一个新的链表,为一个有序链表。将被排序的元素与顺序表当中的元素进行逐一比较,找到最后一个比被排序元素小的那一个元素,然后将此元素插入到那个元素的后面。
代码:/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: The head of linked list.
*/
ListNode *insertionSortList(ListNode *head) {
// write your code here
ListNode *dummy = new ListNode(0);
while (head != NULL) {
ListNode *node = dummy;
while (node->next != NULL && node->next->val < head->val) {
node = node->next;
}
ListNode *temp = head->nex
4000
t;
head->next = node->next;
node->next = head;
head = temp;
}
return dummy->next;
}
};
做题感想:创建一个dummy 指针用来记录头指针的位置,体会插入排序的意义。
样例:Given 1->3->2->0->null, return 0->1->2->3->null
解题思路:另外创造一个新的链表,为一个有序链表。将被排序的元素与顺序表当中的元素进行逐一比较,找到最后一个比被排序元素小的那一个元素,然后将此元素插入到那个元素的后面。
代码:/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: The head of linked list.
*/
ListNode *insertionSortList(ListNode *head) {
// write your code here
ListNode *dummy = new ListNode(0);
while (head != NULL) {
ListNode *node = dummy;
while (node->next != NULL && node->next->val < head->val) {
node = node->next;
}
ListNode *temp = head->nex
4000
t;
head->next = node->next;
node->next = head;
head = temp;
}
return dummy->next;
}
};
做题感想:创建一个dummy 指针用来记录头指针的位置,体会插入排序的意义。
相关文章推荐
- 链表插入、链表相加、链表相乘、链表排序、链表合并等操作的java实现
- 链表插入排序
- 单链表---直接插入排序
- leetcode之链表类之链表排序-----147/148. 链表快速排序 链表插入排序
- 链表初解(一)——单链表的创建、删除、插入、测长、排序、逆置
- 用链表实现直接选择排序和直接插入排序
- 【回忆c语言】从指针的定义初始化到链表的插入删除排序实现code
- 单链表排序(插入与归并)
- 关于动态存储分配函数的调用,在已经过排序的数组中查找及删除内容的操作,余数的分析,删除字符数组中的空格,对链表的逆置,在源字符串中查找子字符串的个数,函数指针以及函数的调用,循环赋值带来的问题以及插入
- 链表:插入,删除,显示,排序
- <数据结构>单链表元素按插入方法排序实现
- 链表,创建,删除,插入,反转,排序
- 链表基本排序(逆置、冒泡、选择、插入)
- C实现链表一般接口函数(插入,删除,排序,等等)
- C语言实现单向链表及其各种排序(含快排,选择,插入,冒泡)
- Insertion Sort List ——链表插入排序
- 【数据结构】双链表的建立,排序,插入,删除
- 链表排序-直接插入排序
- 对单链表进行 删除、插入、排序 等操作。
- 链表实现归并(快速、插入)排序