資料結構C語言版錶插入排序

2021-09-22 22:06:36 字數 2415 閱讀 1471

/*演算法10.3 p267-p270

編譯環境:dev-c++ 4.9.9.2

日期:2023年2月13日

*/#include

#include

// 靜態鍊錶型別

#define size 100 // 靜態鍊錶容量

typedef int keytype; // 定義關鍵字型別為整型

typedef int infotype; // 定義其他資訊的型別

typedef struct

redtype; // 記錄型別

typedef struct

slnode; // 表結點型別

typedef struct

slinklisttype; // 靜態鍊錶型別

// 由陣列d建立n個元素的表插入排序的靜態鍊錶sl

void tableinsert(slinklisttype *sl,redtype d,int n)

sl).r[i+1].next=p; // 將當前記錄插入靜態鍊錶

sl).r[q].next=i+1;

}(*sl).length=n;

}// 演算法10.3 p270

// 根據靜態鍊錶sl中各結點的指標值調整記錄位置,使得sl中記錄按關鍵字

// 非遞減有序順序排列

void arrange(slinklisttype *sl)

p=q; // p指示尚未調整的表尾,為找第i+1個記錄作準備

}}// 求得adr[1..l.length],adr[i]為靜態鍊錶l的第i個最小記錄的序號

void sort(slinklisttype l,int adr)

}// 演算法10.18(l的型別有變) p290

// adr給出靜態鍊錶l的有序次序,即l.r[adr[i]]是第i小的記錄。

// 本演算法按adr重排l.r,使其有序。

void rearrange(slinklisttype *l,int adr)

l).r[j]=(*l).r[0];

adr[j]=j;

}}void print(slinklisttype l)

#define n 8

int main()

,,,,

,,,};slinklisttype l1,l2;

int *adr,i;

tableinsert(&l1,d,n);

l2=l1; // 複製靜態鍊錶l2與l1相同

printf("排序前:\n");

print(l1);

arrange(&l1);

printf("l1排序後:\n");

print(l1);

adr=(int*)malloc((l2.length+1)*sizeof(int));

sort(l2,adr);

for(i=1;i<=l2.length;i++)

printf("adr[%d]=%d ",i,adr[i]);

printf("\n");

rearrange(&l2,adr);

printf("l2排序後:\n");

print(l2);

system("pause");

return 0; }/*

排序前:

key=49 ord=1 next=8

key=38 ord=2 next=1

key=65 ord=3 next=5

key=97 ord=4 next=0

key=76 ord=5 next=4

key=13 ord=6 next=7

key=27 ord=7 next=2

key=49 ord=8 next=3

l1排序後:

key=13 ord=6 next=6

key=27 ord=7 next=7

key=38 ord=2 next=7

key=49 ord=1 next=6

key=49 ord=8 next=8

key=65 ord=3 next=7

key=76 ord=5 next=8

key=97 ord=4 next=0

adr[1]=6 adr[2]=7 adr[3]=2 adr[4]=1 adr[5]=8 adr[6]=3 adr[7]=5 adr[8]=4

l2排序後:

key=13 ord=6 next=7

key=27 ord=7 next=2

key=38 ord=2 next=1

key=49 ord=1 next=8

key=49 ord=8 next=3

key=65 ord=3 next=5

key=76 ord=5 next=4

key=97 ord=4 next=0

請按任意鍵繼續. . .*/

資料結構 C語言版

考試大綱將陸續公布 計算機應用基礎考試大綱 主要考查計算機應用基礎知識,參考參考用書課後練習內容。其它同型別的計算機應用基礎教材均可作為複習用書 高等數學考試大綱 一 函式 二 極限 1 數列極限的概念 2 數列極限的性質 3 函式極限的概念 4 函式極限的定理 5 無窮小量和無窮大量 6 兩個重要...

資料結構 c語言版 複習

積少成多,爭取每天進步一點。資料結構複習資料 一 填空題 1.資料結構是一門研究非數值計算的程式設計問題中計算機的操作物件以及它們之間的關係和運算等的學科 2.資料結構被形式地定義為 d r 其中d是資料元素的有限集合 r是d上的關係有限集合 3.資料結構包括資料的邏輯結構 資料的儲存結構和資料的運...

資料結構 c語言版 複習

資料結構複習資料 一 填空題 1.資料結構是一門研究非數值計算的程式設計問題中計算機的操作物件以及它們之間的關係和運算等的學科。2.資料結構被形式地定義為 d,r 其中d是資料元素的有限集合,r是d上的關係有限集合。3.資料結構包括資料的邏輯結構 資料的儲存結構和資料的運算這三個方面的內容。4.資料...