雙向鍊錶迴圈的快速排序呼叫函式

2021-08-01 18:53:15 字數 1568 閱讀 6659

補充昨天的通訊錄程式,對雙向鍊錶快速排序呼叫程式進行修改

雙向鍊錶迴圈的快速排序呼叫函式

#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...