雙向鍊錶的插入排序(交換節點)

2021-10-25 10:07:08 字數 1300 閱讀 5808

插入排序需要從後往前遍歷尋找可以插入的位置,所以會使用到雙向鍊錶

typedef

struct node//定義的結構體

*list;

建立帶頭節點的雙鏈表

list create_list()

printf

("請輸入資料(輸入-1結束):");

for(

int i =0;

; i++)}

if(head && i ==0)

else

if(q)

}return head;

}

重點來了,排序函式如下:

void

insert_sort

(list head)

//插入排序,傳入頭節點}if

(q->next != p)

//如果q有前移,插入temp

else

//temp是最後乙個節點}}

printf

("已排序\n");

}else

}

怕你們懶,列印鍊錶的函式也寫一下吧

void

print_list

(list head)

putchar

('\n');

}else

}

程式結束前可不要忘了銷毀鍊錶

void

destory_list

(list head)

}

標頭檔案,函式宣告,main函式也貼一下

#include

#include

#define size sizeof(struct node)

list create_list()

;void

print_list

(list head)

;void

insert_sort

(list head)

;void

destory_list

(list head)

;int

main

(void

)

可以先複製貼上執行一下,試試寫的對不對,有問題還請指出,謝謝。

c語言雙鏈表排序交換節點 雙向鍊錶排序C語言程式

雙向鍊錶排序.cpp 定義控制台應用程式的入口點。include include include define len sizeof struct node struct node int data struct node next struct node last struct list stru...

鍊錶排序交換節點為什麼還得單獨交換next指標?

通過給鍊錶排序,交換節點時,明明已經交換資料域,後面還得交換next指標 typedef struct node node 鍊錶節點排序 int nodesort node phead node ppre null node pcur null node tmp 臨時交換變數 選擇法排序 for p...

鍊錶插入排序

void insertsort list sortascount,node node else p prior next q q next p int sortwithinsetmethod list sortasdata wchar pp p data if isnum pp int i 0 i ...