数据结构(三) 单链表的排序 ----按插入方法排序(带头节点)
2016-12-30 12:42
363 查看
//链表的排序 ---------按插入方法排序
//算法思想:先把头节点断掉,然后判断第一个数和第二个数的大小,如果第一个数小于第二个数,那么进入循环,找到排好序的最后一个,如果没有,那么将头节点连上那个节点
void insertSort(struct Node *head)
{
struct Node *p1,*p2,*p3,*p4,*p5;
p1 = head->next;
head->next = NULL;
while(p1!=NULL)
{
p4 = head;
p3 = head->next;
while(p3!=NULL&&p3->data<p1->data)
{
p4 = p3;
p3 = p3->next;
}
p5 = p1->next;
p1->next = p4->next;
p4->next = p1;
p1 = p5;
}
}
//算法思想:先把头节点断掉,然后判断第一个数和第二个数的大小,如果第一个数小于第二个数,那么进入循环,找到排好序的最后一个,如果没有,那么将头节点连上那个节点
void insertSort(struct Node *head)
{
struct Node *p1,*p2,*p3,*p4,*p5;
p1 = head->next;
head->next = NULL;
while(p1!=NULL)
{
p4 = head;
p3 = head->next;
while(p3!=NULL&&p3->data<p1->data)
{
p4 = p3;
p3 = p3->next;
}
p5 = p1->next;
p1->next = p4->next;
p4->next = p1;
p1 = p5;
}
}
相关文章推荐
- 数据结构—单链表—直接插入排序
- 二叉搜索树的相关操作:插入节点,删除节点,排序,查找,最大值,最小值,前序,中序,后序遍历(主要用到递归的方法)
- 顺序单链表插入新节点的一种方法
- 数据结构(一)单链表的基本操作(不带头节点)
- 数据结构——非循环带头结点单链表的递归方法逆置
- 【c++版数据结构】之单链表的实现(带头结点以及尾节点)
- 数据结构(二)单链表的逆序(带头节点)
- 数据结构:设有一个不带头结点的单链表L,设计两个递归算法,del(L,x)删除单链表L中第一个值为x的节点,delall(L,x)删除单链表L中的最小节点值。
- c++实现数据结构中的各种排序方法:直接插入、选择,归并、冒泡、快速、堆排序、shell排序
- 数据结构10-排序方法之直接插入排序的实例
- C语言实现单链表的节点插入(带头结点)
- 数据结构:单链表(二)之链表节点排序,升序插入数据,删除指定的所有节点,翻转链表操作
- C++单链表的动态创建,查找,遍历,删除,插入,添加,排序
- 数据结构---单链表(建立,节点删除,节点插入)
- 直接插入排序(修改自严蔚敏的数据结构)
- MFC CTreectrl 通过DeleteAllItems删除全部节点后,再插入节点不显示问题解决方法
- XML节点排序的一种方法
- {数据结构}直接插入排序
- 初学js插入节点appendChild insertBefore使用方法
- 数据结构 插入排序的实现