zoukankan      html  css  js  c++  java
  • 单链表排序

    算法思想:采用直接插入排序算法的思想,先构成只含一个数据结点的有序单链表,然后一次扫描剩下的结点p(直至p==NULL为止),在有序表中通过比较查找插入p的前驱结点pre,然后将p插入到*pre之后
    核心代码

    void Sort(LinkList *L){
    	LinkList *p,*r,*pre;
    	p=L->next;
    	r = p->next;   //保持r是p的后继结点,以保证不断链
    	p->next = NULL; //构造一个只有一个数据结点的有序表 就是让一个有序表的长度为1
    	p=r;
    	while(p){
    		r=p->next;  //保存p的后继结点指针
    		pre = L;
    		while(pre->next!=NULL && pre->next->data < p->data)
    			pre = pre->next;
    
    		p->next = pre->next;
    		pre->next = p;
    
    		p = r;  //扫描剩下的结点
    	}
    display(L);
    }
    

    运行代码

    #include <stdio.h>
    #include <malloc.h>
    #include <stdlib.h>
    #include <string.h>
    struct LinkList{
    	int data;
    	struct LinkList *next;
    };
    void display(LinkList *L){
    	if (L->next)
    	{
    		printf("%d ",L->next->data);
    		display(L->next);
    	}else{
    		printf("
    ");
    	}
    }
    void Sort(LinkList *L){
    	LinkList *p,*r,*pre;
    	p=L->next;
    	r = p->next;   //保持r是p的后继结点,以保证不断链
    	p->next = NULL; //构造一个只有一个数据结点的有序表 就是让一个有序表的长度为1
    	p=r;
    	while(p){
    		r=p->next;  //保存p的后继结点指针
    		pre = L;
    		while(pre->next!=NULL && pre->next->data < p->data)
    			pre = pre->next;
    
    		p->next = pre->next;
    		pre->next = p;
    
    		p = r;  //扫描剩下的结点
    	}
    display(L);
    }
    int main(){
    	LinkList *L = (struct LinkList *)malloc(sizeof(struct LinkList));
    	int a[] = {1,5,2,7,4,7,8,54,8,34,8,3,8,3};
    	int n = sizeof(a)/(sizeof(int));
    	int h = 0;
    	L->next = NULL;
    	LinkList *p;
    	for (int i=0;i<n;i++)
    	{
    		p = (struct LinkList *)malloc(sizeof(struct LinkList));
    		p->data =a[h++];
    		p->next = L->next;
    		L->next = p;
    	}
    Sort(L);
    
    
    	return 0;
    }
    
  • 相关阅读:
    集群、分布式、负载均衡区别与联系
    Android--加载大分辨率图片到内存
    Android--MP3播放器MediaPlayer
    Android--SoundPool
    Android--MediaPlayer高级
    Android--调用系统照相机拍照与摄像
    Android--SurfaceView播放视频
    Android--使用VideoView播放视频
    Android--使用Camera拍照
    Vue组件选项props
  • 原文地址:https://www.cnblogs.com/CCCrunner/p/11781677.html
Copyright © 2011-2022 走看看