日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构源码笔记(C语言):英文单词按字典序排序的基数排序

發布時間:2025/4/16 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构源码笔记(C语言):英文单词按字典序排序的基数排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
//實現英文單詞按字典序排序的基數排序算法#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语言):英文单词按字典序排序的基数排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。