[問題] 請問雙向鏈結如何改成由大到小排序?

看板C_and_CPP作者 (我的雞巴女友)時間7年前 (2018/06/28 02:34), 編輯推噓3(3010)
留言13則, 9人參與, 7年前最新討論串1/1
請問下面雙向鏈結用來建立鏈結的一部分 請問我該怎麼改, 才可以讓陣列可以由小到大 或是由大到小排序在雙向鏈結上面???? 請問有強者可以幫我改一下嗎??? 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

06/28 02:38, 7年前 , 1F
幫你改一下? code完全沒有排序的部份阿
06/28 02:38, 1F

06/28 07:10, 7年前 , 2F
想法?
06/28 07:10, 2F

06/28 07:23, 7年前 , 3F
sorting不要動指標改裡面的data就好吧
06/28 07:23, 3F

06/28 07:24, 7年前 , 4F
再不然sort後再給值
06/28 07:24, 4F

06/28 07:32, 7年前 , 5F
你有想過要怎麼解決這個問題嗎?XD
06/28 07:32, 5F

06/28 09:18, 7年前 , 6F
這完全沒有排序的部分吧?
06/28 09:18, 6F

06/28 09:33, 7年前 , 7F
你可以裝的時候排序 或是裝完以後再排序 至於排序的演算法
06/28 09:33, 7F

06/28 09:33, 7年前 , 8F
你可以估狗一下
06/28 09:33, 8F

06/28 09:48, 7年前 , 9F
這是作業? 可以先了解sort有哪些,你要用哪一種sort
06/28 09:48, 9F

06/28 09:48, 7年前 , 10F
用在linked list又可分為要交換node,或是交換data
06/28 09:48, 10F

06/28 09:49, 7年前 , 11F
交換data比較單純,跟array差不多~ 交換node就是比細心了
06/28 09:49, 11F

06/28 10:58, 7年前 , 12F
這板要先寫自己的版本再來討論,這樣偷渡伸手文不好 XD
06/28 10:58, 12F

06/28 17:56, 7年前 , 13F
期末還卡在這種問題上不好吧,如果是什麼考試題目的話
06/28 17:56, 13F
文章代碼(AID): #1RCzYuSG (C_and_CPP)