補充昨天的通訊錄程式,對雙向鍊錶快速排序呼叫程式進行修改
雙向鍊錶迴圈的快速排序呼叫函式
#include
#include
#include
#define t 1
#define f -1
typedef int bo;
typedef char type;
struct address;
void rank_num(address head, int begin, int end);
address unit(address head, int index);
void print(address head);
main函式過長且與主題關係不大,省略。
address unit(address head, int index) /*address是struct address* 的自定義型別,unit函式是將address型別變數head指向它的第index個除頭結點的結點*/
return (temp);
}void rank_num(address head, int begin, int end) //快速排序
int i = begin; //i是開始的結點位數
int j = end; //j是結束的結點位數
char name[20]; //name[20]和num[12]是暫存資料的過渡char型別陣列
char num[12];
strcpy(name, unit(head, begin)->name); //將開始的結點的資料暫存進name,num
strcpy(num, unit(head, begin)->num);
while (i < j)
strcpy(unit(head, i)->name, unit(head, j)->name); //第i,j位結點的資料互換
strcpy(unit(head, i)->num, unit(head, j)->num);
while (i < j && strcmp(unit(head, i)->num, num) <= 0) /*當最初結點的num比暫存的num小或相等,最初結點向前推一位*/
strcpy(unit(head, j)->name, unit(head, i)->name); //第i,j位結點資料互換
strcpy(unit(head, j)->num, unit(head, i)->num);
}strcpy(unit(head, i)->name, name); //將暫存的資料返回最初結點
strcpy(unit(head, i)->num, num);
rank_num(head, begin, i - 1); //對最初結點到i - 1位進行排序
rank_num(head, i + 1, end); //對i + 1位到最後結點進行排序
}
雙向迴圈鍊錶的氣泡排序
之前和群友水群的時候被認為雙向迴圈鍊錶不能實現氣泡排序,於是實現了一下,哪有什麼不能的 下面是純c的 實現.如果錯誤還請指正.include include int n 0 鍊錶中的資料的數量 struct two way list void two way list init struct two...
雙向鍊錶和雙向迴圈鍊錶
和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼next和prior都指向自己。而對於雙迴圈鍊錶,只需要最後乙個元素的next指向head next,head next的prior指向最後乙個節點即可。新節點s插入鍊錶,s next給p結點,s prior給p prior,然後,p prior n...
迴圈鍊錶,雙向鍊錶
迴圈鍊錶 迴圈鍊錶與順序鍊錶之間的區別 迴圈鍊錶最後乙個資料的next指標域不為空,而是指向頭結點,其他基本操作大體相同,只是在判斷表結束的條件變為判斷節點的引用域是否為頭引用 雙向鍊錶 author neosong date oct 10,2017 4 43 01 pm program of in...