//实现英文单词按字典序排序的基数排序算法#include<stdio.h>
#include<malloc.h>
#include<string.h>#define MaxLen 9  //单词的最大长度
#define Radix 27//基数Radix为27,分别对应'','a',....'z'typedef char String[MaxLen+1];//定义String为字符数组类型typedef struct node
{String word;struct node *next;
}LinkNode;void DispWord(String r[],int n)//输出单词
{int i;printf(" ");for(i=0;i<n;i++)printf("[%s]",r[i]);printf("\n");
}void PreProcess(String r[],int n)
{//对单词进行预处理,用空格填充尾部至MaxLen长int i,j;for(i=0;i<n;i++){if(strlen(r[i])<MaxLen){for(j=strlen(r[i]);j<MaxLen;j++)r[i][j]=' ';r[i][j]='\0';}}
}void EndProcess(String r[],int n)
{//恢复处理,删除预处理时填充的尾部空格int i,j;for(i=0;i<n;i++){for(j=MaxLen-1;r[i][j]==' ';j--);r[i][j+1]='\0';}
}void Distribute(String r[],LinkNode *head[],LinkNode *tail[],int j,int n)
{//按关键字的第j个分量进行分配,进入此过程时各队列一定为空int i,k;LinkNode *p;for(i=0;i<n;i++)//一次扫描r[i],将其入队{if(r[i][j]=' ')//空格时放入0号队列中,'a'时放入1号队列中,...k=0;elsek=r[i][j]-'a'+1;p=(LinkNode *)malloc(sizeof(LinkNode));//创建新结点strcpy(p->word,r[i]);p->next=NULL;if(head[k]==NULL){head[k]=p;tail[k]=p;}else{tail[k]->next=p;tail[k]=p;}}
}void Collect(String r[],LinkNode *head[])
{//一次将各非空队列中的记录收集起来 int k=0,i;LinkNode *p;for(i=0;i<Radix;i++)for(p=head[i];p!=NULL;p=p->next)strcpy(r[k++],p->word);
}void RadixSort(String r[],int n)
{//对r[0...n-1]进行基数排序LinkNode *head[Radix],*tail[Radix];//定义Radix个队列int i,j;for(i=MaxLen-1;i>=0;i--)//从低位到高位排序{for(j=0;j<Radix;j++)head[j]=tail[j]=NULL;//队列置空Distribute(r,head,tail,i,n);//第i趟分配Collect(r,head);//第i趟收集}
}int main()
{int n=6;String r[]={"while","if","if-else","do-while","for","case"};    printf("排序前:\n");  DispWord(r,n);PreProcess(r,n);printf("预处理后:\n");  DispWord(r,n);RadixSort(r,n);printf("排序结果:\n");   DispWord(r,n);EndProcess(r,n);printf("最终结果:\n");  DispWord(r,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语言):英文单词按字典序排序的基数排序相关推荐

  1. 数据结构源码笔记(C语言描述)汇总

    数据结构源码笔记(C语言):英文单词按字典序排序的基数排序 数据结构源码笔记(C语言):直接插入排序 数据结构源码笔记(C语言):直接选择排序 数据结构源码笔记(C语言):置换-选择算法 数据结构源码 ...

  2. 数据结构源码笔记(C语言):索引文件建立和查找

    //实现索引文件建立和查找算法#include<stdio.h> #include<malloc.h> #include<string.h> #include< ...

  3. 数据结构源码笔记(C语言):快速排序

    //实现快速排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...

  4. 数据结构源码笔记(C语言):冒泡排序

    //冒泡排序算法实现 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; type ...

  5. 数据结构源码笔记(C语言):希尔插入排序

    //实现希尔插入排序算法 #include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; ty ...

  6. 数据结构源码笔记(C语言):直接插入排序

    //实现直接插入排序算法#include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; typ ...

  7. 数据结构源码笔记(C语言):直接选择排序

    //实现直接选择排序算法#include<stdio.h> #include<malloc.h> #define MAXE 20typedef int KeyType; typ ...

  8. 数据结构源码笔记(C语言):置换-选择算法

    //实现置换-选择算法#include<stdio.h> #include<malloc.h> #include<string.h> #include<std ...

  9. 数据结构源码笔记(C语言):Huffman树字符编码

    #include <stdio.h> #include<string.h> #define N 10 /*待编码字符的个数,即树中叶结点的最大个数*/ #define M 2* ...

最新文章

  1. JQuery3 的新变化
  2. Linux运维基础(硬件和操作系统)
  3. Mac 技术篇-多个python版本环境下Geany编辑器指定python版本运行
  4. 问题 E: 括号规则
  5. C++ 构建最小堆、最大堆
  6. 面试官留步!听我跟你侃会儿Docker原理
  7. springboot 获取bean_3W 字的 Spring Boot 超详细总结
  8. 复制网页上无法选中的文字
  9. 《统计学习方法》—— 聚类方法(层次聚类和K均值聚类)
  10. System Center Data Protection Manager 2007之一安装
  11. 计算机科学导论:第六章 计算机网络和因特网
  12. Hou的图像显著性计算模型
  13. 原生Python实现KNN算法,并用鸢尾花(iris)数据集测试
  14. 3、基于竞速小车 实现 华为hi lens红绿灯识别操作
  15. 一、HTML、HTTP、web综合问题
  16. 鼠标dpi设置多少合适呢?查看鼠标dpi的方法
  17. 头歌平台(EduCoder)—— Matplotlib图形配置
  18. cocos2d-x的面试题
  19. linux操作系统面试题及答案
  20. 达梦数据库导入导出操作步骤

热门文章

  1. gdb加载python_gdb加载python脚本的方法
  2. mysql递归查询所有上下节点_【转】MySQL之Spider存储引擎原理详解
  3. Win2003 安全设置大全
  4. Linux下的top命令
  5. 【音乐App】—— Vue-music 项目学习笔记:播放器内置组件开发(一)
  6. 代写SOFTENG 370 Operating Systems课设、代做C/C++ 留学生作业、代写c/c++代码、代写C/C++编程作业...
  7. UWP入门(二) -- 基础笔记
  8. mongodb中批量将时间戳转变通用日期格式
  9. Redis的系统级命令
  10. linux删除非空目录