最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言中數(shù)據(jù)結(jié)構(gòu)之鏈?zhǔn)交鶖?shù)排序

 更新時(shí)間:2017年09月14日 08:45:50   作者:Vit_rose  
這篇文章主要介紹了C語(yǔ)言中數(shù)據(jù)結(jié)構(gòu)之鏈?zhǔn)交鶖?shù)排序的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下

C語(yǔ)言中數(shù)據(jù)結(jié)構(gòu)之鏈?zhǔn)交鶖?shù)排序

實(shí)現(xiàn)效果圖:

實(shí)例代碼:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1

typedef int Status;
typedef int ElemType;

#define MAX_NUM_OF_KEY 8 //關(guān)鍵字項(xiàng)數(shù)最大值
#define RADIX 10 //關(guān)鍵字基數(shù),此時(shí)是十進(jìn)制整數(shù)的基數(shù)
#define MAX_SPACE 100 //書(shū)上為10000
#define ord(ch) ((ch)-'0')
#define succ(x) ((x)+1)
typedef char KeyType;
typedef struct
{
  KeyType keys[MAX_NUM_OF_KEY]; //關(guān)鍵字
  int next;
}SLCell;  //靜態(tài)鏈表的結(jié)點(diǎn)類(lèi)型

typedef struct
{
  SLCell r[MAX_SPACE]; //靜態(tài)鏈表的可利用空間,r[0]為頭結(jié)點(diǎn)
  int keynum; //記錄當(dāng)前關(guān)鍵字個(gè)數(shù)
  int recnum; //靜態(tài)鏈表的當(dāng)前長(zhǎng)度
}SLList;  //靜態(tài)鏈表類(lèi)型
typedef int ArrType[RADIX]; //指針數(shù)組類(lèi)型

/*******************************聲明部分****************************************/



/*******************************函數(shù)部分****************************************/
void Distribute(SLCell r[],int i,ArrType f,ArrType e)
{
  int j,p;

  for(j = 0;j<RADIX;++j){
    f[j] = 0;
    e[j] = 0;
  }

  for(p = r[0].next; p ;p = r[p].next){
    j = ord(r[p].keys[i]);
    if(!f[j])
      f[j] = p;
    else
      r[e[j]].next = p;
    e[j] = p;
  }
}

void Collect(SLCell r[],int i,ArrType f,ArrType e)
{
  int j,t;

  for(j = 0; j<RADIX&&!f[j] ; j = succ(j)); //找到第一個(gè)非空子表,succ為求后繼函數(shù)
  if(j<RADIX){
    r[0].next = f[j];
    t = e[j];
    while(j<RADIX){
      for(j = succ(j) ; j<RADIX-1 && !f[j]; j = succ(j));
        if(f[j] && j<=RADIX-1){
          r[t].next = f[j];
          t = e[j];
        }
    }
    r[t].next = 0;
  }

}

void RadixSort(SLList *L)
{
  int i;
  ArrType f,e;

  for(i = 0;i<L->keynum;i++){
    Distribute(L->r,i,f,e);
    Collect(L->r,i,f,e);
  }
}

void CreateSLL(SLList *L)
{
  char s[100];
  int i,n,ct;
  L->recnum = 0;

 /*  printf("請(qǐng)輸入關(guān)鍵字個(gè)數(shù):\n");
  scanf("%d",&L->keynum);
  printf("請(qǐng)輸入鏈表長(zhǎng)度:\n");
  scanf("%d",&n);*/
  L->keynum = 3;
  n = 10;
  printf("依次輸入:278 109 063 963 589 184 505 269 008 083 \n");
  for(ct = 0;ct<n;ct++){
  //  printf("請(qǐng)輸入關(guān)鍵字:\n");

    scanf("%s",&s);
    L->recnum++;
    for(i = 0;i<L->keynum;++i)
      L->r[L->recnum].keys[L->keynum-1-i] = s[i];
  }
  for(i = 0;i<L->recnum;++i)
    L->r[i].next = i+1;
  L->r[L->recnum].next = 0;
}

void TraverseSLL(SLList L)
{
  int i,j;
  for(i = L.r[0].next; i ;i = L.r[i].next){
    for(j = L.keynum-1;j>=0;j--)
      printf("%c",L.r[i].keys[j]);
    printf(" ");
  }
  printf("\n");
}
/*******************************主函數(shù)部分**************************************/
int main()
{
  SLList L;
  printf("創(chuàng)建靜態(tài)鏈表\n");
  CreateSLL(&L);
  printf("創(chuàng)建完成:\n");
  TraverseSLL(L);

  printf("\n基數(shù)排序:\n");
  RadixSort(&L);
  TraverseSLL(L);
  return 0;
}

如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • 一文讀懂C++中指針和內(nèi)存分配

    一文讀懂C++中指針和內(nèi)存分配

    我們知道聲明的所有變量在內(nèi)存中都有一個(gè)特定的地址。聲明一個(gè)指針變量來(lái)指向內(nèi)存中的這些地址,這篇文章主要介紹了C++中指針和內(nèi)存分配,需要的朋友參考下吧
    2021-06-06
  • C++ Primer中&、*符號(hào)的多重定義與int *p和int* p的區(qū)別講解

    C++ Primer中&、*符號(hào)的多重定義與int *p和int* p的區(qū)別講解

    今天小編就為大家分享一篇關(guān)于C++Primer中&、*符號(hào)的多重定義與int *p和int* p的區(qū)別講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-04-04
  • C++實(shí)現(xiàn)自定義撤銷(xiāo)重做功能的示例代碼

    C++實(shí)現(xiàn)自定義撤銷(xiāo)重做功能的示例代碼

    在使用c++做界面開(kāi)發(fā)的時(shí)候,尤其是實(shí)現(xiàn)白板功能時(shí)需要自己實(shí)現(xiàn)一套撤銷(xiāo)重做功能.如果是qt則有QUndoable對(duì)象,可以直接拿來(lái)用。但是如果是使用gdi繪圖,則可能需要自己實(shí)現(xiàn)了。本文就來(lái)用C++實(shí)現(xiàn)自定義撤銷(xiāo)重做功能,需要的可以參考一下
    2022-12-12
  • Qt利用QNetwork實(shí)現(xiàn)上傳數(shù)據(jù)的示例代碼

    Qt利用QNetwork實(shí)現(xiàn)上傳數(shù)據(jù)的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Qt如何利用QNetwork實(shí)現(xiàn)上傳數(shù)據(jù)的 功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-02-02
  • C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單計(jì)算器程序

    C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單計(jì)算器程序

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單計(jì)算器程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • C語(yǔ)言編寫(xiě)Linux守護(hù)進(jìn)程實(shí)例

    C語(yǔ)言編寫(xiě)Linux守護(hù)進(jìn)程實(shí)例

    這篇文章主要介紹了C語(yǔ)言編寫(xiě)Linux守護(hù)進(jìn)程實(shí)例,本文講解了守護(hù)進(jìn)程及其特性、守護(hù)進(jìn)程的編程要點(diǎn)、守護(hù)進(jìn)程代碼實(shí)例等內(nèi)容,需要的朋友可以參考下
    2015-02-02
  • C++實(shí)現(xiàn)LeetCode(105.由先序和中序遍歷建立二叉樹(shù))

    C++實(shí)現(xiàn)LeetCode(105.由先序和中序遍歷建立二叉樹(shù))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(105.由先序和中序遍歷建立二叉樹(shù)),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 最新評(píng)論

    南宁市| 大邑县| 施甸县| 灵台县| 商城县| 余庆县| 天峻县| 青川县| 平原县| 临朐县| 永城市| 大冶市| 南陵县| 将乐县| 莫力| 盈江县| 金川县| 亳州市| 卢龙县| 海南省| 鄂温| 宝丰县| 唐海县| 驻马店市| 托克逊县| 翁源县| 吉木萨尔县| 邢台县| 大庆市| 沅陵县| 福贡县| 城步| 堆龙德庆县| 民勤县| 疏附县| 柳河县| 三河市| 基隆市| 格尔木市| 西和县| 化州市|