作者hunkchen2016 (我的雞巴女友)
看板C_and_CPP
標題[問題] 請問雙向鏈結如何改成由大到小排序?
時間Thu Jun 28 02:34:30 2018
請問下面雙向鏈結用來建立鏈結的一部分
請問我該怎麼改, 才可以讓陣列可以由小到大
或是由大到小排序在雙向鏈結上面????
請問有強者可以幫我改一下嗎???
dlink createdlist(int *array,int len)
{
dlink head; /* 雙向串列的指標 */
dlink before; /* 前一節點的指標 */
dlink new_node; /* 新節點的指標 */
dlink current;
int i;
/* 建立第一個節點, 和配置節點記憶體 */
head = ( dlink ) malloc(sizeof(dnode));
if ( !head ) return NULL; /* 檢查記憶體指標 */
head->data = array[0]; /* 建立節點內容 */
head->front = NULL; /* 設定指標初值 */
head->back = NULL; /* 設定指標初值 */
before = head;
current=before->front; /* 指向第一個節點 */
//int list[10] = {75,98,77,10,57,50,40,81,91,99}; /* 陣列內容 */
for ( i = 1; i < len; i++ ) /* 用迴圈建立其它節點 */
{ /* 配置節點記憶體 */
new_node = ( dlink ) malloc(sizeof(dnode));
new_node->data = array[i]; /* 建立節點內容 */
new_node->front = NULL; /* 設定指標初值 */
new_node->back = before; /* 將新節點指向前節點 */
before->front = new_node; /* 將前節點指向新節點 */
before = new_node; /* 新節點成為前節點 */
}
return head; /* 傳回串列起始指標 */
}
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.54.135
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1530124472.A.710.html
→ djshen: 幫你改一下? code完全沒有排序的部份阿 06/28 02:38
→ jerryh001: 想法? 06/28 07:10
推 b0920075: sorting不要動指標改裡面的data就好吧 06/28 07:23
→ b0920075: 再不然sort後再給值 06/28 07:24
→ sarafciel: 你有想過要怎麼解決這個問題嗎?XD 06/28 07:32
→ dou0228: 這完全沒有排序的部分吧? 06/28 09:18
推 jamfly: 你可以裝的時候排序 或是裝完以後再排序 至於排序的演算法 06/28 09:33
→ jamfly: 你可以估狗一下 06/28 09:33
→ cphe: 這是作業? 可以先了解sort有哪些,你要用哪一種sort 06/28 09:48
→ cphe: 用在linked list又可分為要交換node,或是交換data 06/28 09:48
→ cphe: 交換data比較單純,跟array差不多~ 交換node就是比細心了 06/28 09:49
推 Neisseria: 這板要先寫自己的版本再來討論,這樣偷渡伸手文不好 XD 06/28 10:58
→ tinlans: 期末還卡在這種問題上不好吧,如果是什麼考試題目的話 06/28 17:56