乙個雙向鍊錶排序問題

2021-09-21 01:14:34 字數 604 閱讀 5647

題目:

建立乙個長度為n的帶頭結點的雙向鍊錶,使得該鍊錶中的資料元素遞增有序排列。(必須使用雙向鍊錶完成,資料型別為整型。)

思路:根據題目建立好該雙向鍊錶(尾插法),然後用個指標依次查詢,先從第乙個節點往後走,找出最大節點max,再將max和最後乙個元素交換,第一遍結束(即奇數遍正向查詢);第二遍,從最後乙個節點開始倒著往前找,找到最小節點min,與第乙個節點交換,第二遍結束(即偶數遍反向查詢);第三遍,再從指標此刻的位置即第2個節點往後找,找到第二大節點,與倒數第二個節點交換;第四遍,倒著往前找,。。。。依次迴圈,做n-1次。

typedef int datatype;

typedef struct node

node;//雙向鍊錶的建立

void create(node *&l,datatype a,int n)

r->next=null;

}//尾插法建立雙鏈表

void sort(node *&l,int n)//排序

}n--;

} else//第偶數遍正向

}n--;

} }}//就是來回折返查詢。

建立乙個雙向鍊錶,快速排序演算法排序

include include 雙鏈表的定義 typedef char datatype typedef struct dlistnode 結點型別 定義 dlistnode typedef dlistnode dlinklist void main dinsertbefore p,x dprint...

乙個雙向鍊錶的實現

本來是想改改算了,最後變成全部重寫。既然都是自己寫的,也算是原創吧!struct node node intval,node nextnode,node priornode data val next nextnode prior priornode node headnode new node n...

自己實現乙個雙向鍊錶

雙向鍊錶和單向鍊錶不同的是雙向鍊錶中不僅有next指向,還有pre這個指向,分別指向了該節點的前乙個節點和後乙個節點,這樣比單向鍊錶操作起來更方便.class twonode public class mylinkedlist 0.求鍊錶長度 public intlength 1.頭插 public...