数据结构源码笔记(C语言):基数排序
//实现基数排序算法#include<stdio.h>
#include<malloc.h>
#include<string.h>#define MAXE 20 //线性表中最多元素个数
#define MAXR 10 //基数的最大取值
#define MAXD 8 //关键字位数的最大值typedef struct node //记录类型
{char data[MAXD];//记录的关键字定义的字符串struct node *next; //其他数据项,类型为InfoType
}RecType;void CreaLink(RecType *&p,char *a[],int n);void DispLink(RecType *p);void RadixSort(RecType *&p,int r,int d)// 实现基数排序:*p为待排序序列链表指针,r为基数,d为关键字位数
{RecType *head[MAXR],*tail[MAXR],*t;//定义各链表的首尾指针int i,j,k;for(i=d-1;i>=0;i--)//从低位到高位循环{for(j=0;j<r;j++)//初始化各链队首、尾指针head[j]=tail[j]=NULL;while(p!=NULL)//对于原链表中每个结点循环{k=p->data[i]-'0';//找到第K个链队if(head[k]==NULL)//进行分配{head[k]=p;tail[k]=p;}else{tail[k]->next=p;tail[k]=p;}p=p->next;//取下一个待排序的元素}p=NULL;for(j=0;j<r;j++)//对于每一个链队循环if(head[j]!=NULL)//进行收集{if(p==NULL){p=head[j];t=tail[j];}else {t->next=head[j];t=tail[j];}}t->next=NULL;//最后一个结点的next域置NULLprintf(" 按%d位排序:",d-i-1);DispLink(p);}
}void CreaLink(RecType *&p,char *a[],int n)//采用后插法产生链表
{int i;RecType *s,*t;for(i=0;i<n;i++){s=(RecType *)malloc(sizeof(RecType));strcpy(s->data,a[i]);if(i==0){p=s;t=s;}else{t->next=s;t=s;}}t->next=NULL;
}void DispLink(RecType *p)//输出链表
{while(p!=NULL){printf(" %s",p->data);p=p->next;}printf("\n");
}int main()
{int n=8;char * a[]={"75","23","98","44","57","12","29","64","38","82"};RecType *p;CreaLink(p,a,n);printf("\n");printf("初始化关键字:");DispLink(p);RadixSort(p,10,2);printf(" 最终结果:");DispLink(p);printf("\n\n");return 0;
}
数据结构源码笔记(C语言描述)汇总:
数据结构源码笔记(C语言):英文单词按字典序排序的基数排序
数据结构源码笔记(C语言):直接插入排序
数据结构源码笔记(C语言):直接选择排序
数据结构源码笔记(C语言):置换-选择算法
数据结构源码笔记(C语言):Huffman树字符编码
数据结构源码笔记(C语言):Josephus问题之顺序表
数据结构源码笔记(C语言):Josephus问题之循环链接表
数据结构源码笔记(C语言):多项式合并
数据结构源码笔记(C语言):二叉树之叶子结点旋转销毁
数据结构源码笔记(C语言):哈夫曼树
数据结构源码笔记(C语言):集合的位向量表示
数据结构源码笔记(C语言):链接队列
数据结构源码笔记(C语言):链接栈
数据结构源码笔记(C语言):线性表的单链表示
数据结构源码笔记(C语言):线性表的顺序表示
数据结构源码笔记(C语言):栈的基本操作
数据结构源码笔记(C语言):中缀表达式
数据结构源码笔记(C语言):希尔插入排序
数据结构源码笔记(C语言):索引文件建立和查找
数据结构源码笔记(C语言):冒泡排序
数据结构源码笔记(C语言):快速排序
数据结构源码笔记(C语言):可变长度字符串的快速排序
数据结构源码笔记(C语言):基数排序
数据结构源码笔记(C语言):二路归并排序
数据结构源码笔记(C语言):堆排序
数据结构源码笔记(C语言):二叉树搜索树Kruskal
数据结构源码笔记(C语言):二叉搜索树Prim
数据结构源码笔记(C语言):最短路径弗洛伊德算法
数据结构源码笔记(C语言):深度、广度优先生成树
数据结构源码笔记(C语言):邻接矩阵转化邻接表
数据结构源码笔记(C语言):统计字符串中出现的字符及其次数
数据结构源码笔记(C语言):顺序查找
数据结构源码笔记(C语言):哈希表的相关运算算法
数据结构源码笔记(C语言):分块法查找
数据结构源码笔记(C语言):二分查找
数据结构源码笔记(C语言):二叉树遍历
数据结构源码笔记(C语言):二叉平衡树的相关操作算法
数据结构源码笔记(C语言):二叉排序树的基本操作算法
数据结构源码笔记(C语言):B树的相关运算算法
数据结构源码笔记(C语言):基数排序相关推荐
- 数据结构源码笔记(C语言):英文单词按字典序排序的基数排序
//实现英文单词按字典序排序的基数排序算法#include<stdio.h> #include<malloc.h> #include<string.h>#defin ...
- 数据结构源码笔记(C语言描述)汇总
数据结构源码笔记(C语言):英文单词按字典序排序的基数排序 数据结构源码笔记(C语言):直接插入排序 数据结构源码笔记(C语言):直接选择排序 数据结构源码笔记(C语言):置换-选择算法 数据结构源码 ...
- 数据结构源码笔记(C语言):索引文件建立和查找
//实现索引文件建立和查找算法#include<stdio.h> #include<malloc.h> #include<string.h> #include< ...
- 数据结构源码笔记(C语言):快速排序
//实现快速排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...
- 数据结构源码笔记(C语言):冒泡排序
//冒泡排序算法实现 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...
- 数据结构源码笔记(C语言):希尔插入排序
//实现希尔插入排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; ty ...
- 数据结构源码笔记(C语言):直接插入排序
//实现直接插入排序算法#include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; typ ...
- 数据结构源码笔记(C语言):直接选择排序
//实现直接选择排序算法#include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; typ ...
- 数据结构源码笔记(C语言):置换-选择算法
//实现置换-选择算法#include<stdio.h> #include<malloc.h> #include<string.h> #include<std ...
最新文章
- HDU 1166 敌兵布阵
- Algorithm之MC:Monte Carlo method蒙特·卡罗方法的简介、实现、应用
- 单片机成长之路(51基础篇) - 022 N76e003 APROM模拟EEPROM驱动
- 面试中经常会问的智力题,来看看你会做几道
- mac mongodb可视化工具_MongoDB从立地到成佛(介绍、安装、增删改查)
- Signal处理中的函数可重入问题
- 关于左移右移的操作 学习
- oracle三大索引类型
- 禁忌搜索算法TS求解连续函数最值
- CIF,4CIF,QCIF,D1
- k-anonimity、l-diversity 和 t-closeness
- python读csv文件中文乱码问题简单解决(附python遍历目录下csv文件并输出内容的代码)
- c语言中TR1=1什么意思,c – 如何在Visual Studio 2010(tr1 :: function)中使用tr1?
- 始料未及-- 元宇宙传来好消息,全球轰动
- 5月6日----5月9日一年级课程表
- linux自动生成证书,Linux生成TLS证书
- 轻松无广告:推荐一款高效提醒软件
- WPS中插入图像的剪切方法(转)
- onchange事件的触发
- 用友华表Cell一些用法小结(cs.net版本)