链表实现插入排序

原创 2015年07月10日 16:59:27
word* link_sort_by_cnt(word* head)
{
	word* pcur,*ppre,*pwork,*pnext;
	if(head==NULL||head->next==NULL)
		return head;
	pwork=head;//head=NULL
	while(pwork)
	{
		pnext=pwork->next;
		pwork->next=NULL;
		pcur=head;
		ppre=NULL;
		while(pcur){
			if(pcur->cnt<pwork->cnt){
				ppre=pcur;
				pcur=pcur->next;
			}else{
				break;
			}
		}
		if(ppre==NULL){
			pwork->next=pcur;
			head=pwork;
		}else{
			ppre->next=pwork;
			pwork->next=pcur;
		}
		pwork=pnext;
	}
	return head;
}
//word* link_sort_by_cnt(word* phead)
{
	word* pCur, *pPre,* pNext,*pWork ;
	pWork = phead ;
	phead = NULL ;
	while(pWork)
	{
		pNext = pWork ->next ;

		pCur = phead ;
		pPre = NULL;
		while(pCur)
		{
			if(pWork ->cnt < pCur ->cnt)
			{
				pPre = pCur ;
				pCur = pCur ->next ;
			}else
			{
				break ;
			}
		}
		if(pPre == NULL)
		{
			pWork ->next = pCur ;
			phead = pWork ;
		}else 
		{
			pPre ->next = pWork ;
			pWork ->next = pCur ;
		}
		pWork = pNext ;
	}
	return phead;
}
//自己的版本 新建头结点,把原来的链表断开,把原链表的节点安装到新的链表(原节点)上
word* link_sort_by_cnt(word* phead)
{
	word* nh=NULL;
	word* pwork=phead;
	word* pcur;
	word* pnext;
	word* pre;
	while(pwork)
	{
		pnext=pwork->next;
		pcur=nh;
		pre=NULL;
		while(pcur)
		{
			if(pcur->cnt<pwork->cnt)
			{
				pre=pcur;
				pcur=pcur->next;
			}else
				break;
		}
		if(pre==NULL)
		{
			pwork->next=pcur;
			nh=pwork;
		}else
		{
			pre->next=pwork;
			pwork->next=pcur;
		}
		pwork=pnext;
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

链表插入排序

  • 2016年12月26日 17:22
  • 1KB
  • 下载

链表的插入排序

一直都不知道怎么写链表的插入排序,之后在网上找了一个例子。理解了之后复制了过来。希望大家共同进步吧。 #include "stdafx.h" #include #include using name...

第1章第2节练习题12 单链表之插入排序

有一个带头结点的单链表对其排序,使之递增有序

C++链表冒泡,归并,插入排序(纯指针)

#include using namespace std; //别问我为什么要写链表的冒泡排序。 struct Node { int data; Node *next; No...

非循环单链表选择与插入排序

排序是学习数据结构与算法中最有趣的知识之一,近期学习链表时,重点研究了选择排序和插入排序,经过了反复的推敲,最后明白了一些,但又发现思维不够清晰,故打算写这篇博文,其重点是用来理清自己的思维,从而掌握...

链表插入排序之算法根据具体DS因地制宜

链表的插入排序: 本吊昨天想到一个及其刮三的算法,因为我还是习惯了原来的,每次insert都是数组从后往前找合适的插入位点,然而链表是从前往后移动外层循环指针的, 于是将前面sortedlis...

Insertion Sort List 链表的插入排序

插入排序是假设前面一部分已经是有序的,后面A 不满足有序,则寻找前面有序序列的合适的位置,插入A。 插入排序默认第一个是有序状态。 假设我们有3 -> 5 -> 4 ->1 -> 2这样一个链表。...

[LeetCode]147 链表插入排序

Insertion Sort List(链表插入排序)【难度:Medium】 Sort a linked list using insertion sort. 对一个链表使用插入排序。解题思路基于...

【leetcode】单链表的插入排序

单链表的直接插入排序排序思想跟数组的插入排序的思想是一样的。但是这里涉及到链表的插入删除等等,一些操作,实现起来还是稍微麻烦的。 链表的直接插入: 情况1:当前结点的值大于上一个结点的值,不用处理...

单链表的插入排序(详细图解说明)

题目:实现一个单链表的插入排序 如图所示,解决这个问题的关键 (1)首先必须维护当前节点的前指针, (2)然后还要维护要插入的位置的前后指针, (3)每个要插入的节点都要从头开...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:链表实现插入排序
举报原因:
原因补充:

(最多只允许输入30个字)