迴圈鍊錶,雙向鍊錶

2021-08-09 04:24:43 字數 1282 閱讀 1775

迴圈鍊錶

迴圈鍊錶與順序鍊錶之間的區別:迴圈鍊錶最後乙個資料的next指標域不為空,而是指向頭結點,其他基本操作大體相同,只是在判斷表結束的條件變為判斷節點的引用域是否為頭引用

雙向鍊錶

/**  

* @author neosong

* @date oct 10, 2017

* 4:43:01 pm

* program of information:實現雙向鍊錶

* 為何定義雙向鍊錶?在單向鍊錶中查詢a節點的後繼節點,時間複雜度為o(1),而查詢a節點的前驅節點,時間複雜度為o(n)

* 而雙向鍊錶查詢前驅和後繼節點的時間複雜度都為o(1)

* 1.定義節點類

*/public class dbnode

public dbnode(t val)

private dbnode

next;//後繼

private dbnode

pre;//前驅

private t data;//資料域

public dbnode

getnext()

public void setnext(dbnode

next) public dbnode

getpre() public void setpre(dbnode

pre) public t getdata() public void setdata(t data) } /** * @author neosong * @date oct 10, 2017 * 4:48:33 pm * program of information: 2.定義雙向鍊錶的方法 */ public class dblinklist

private dbnode

head;//定義頭結點 /* * 插入操作,雙向鍊錶比單向鍊錶的插入操作複雜 * 方法需要兩個引數,i為插入的位置,val為值 */ public void insert(int i,t val) q.getpre().setnext(q.getnext());; q.setpre(q.getpre()); } /* * 附加操作 */ public void attend(t val) q.setnext(p); p.setpre(q); } /* * 列印鍊錶 */ public void printlist() system.out.println("]"); } /* * 是否為空 */ public boolean isempty() }

鍊錶 雙向迴圈鍊錶

雙向迴圈鍊錶與單鏈表一樣,都是邏輯連續 物理不連續的儲存方式,但它的效果要遠遠優於單鏈表,其結構如下 雙向迴圈鍊錶首先要有乙個頭節點,頭節點中不存放資料,真正的資料從頭節點的下乙個節點開始存放 然後每乙個節點都有兩個指標,分別指向前乙個節點和後乙個節點 最後頭尾相連,就成了雙向迴圈鍊錶。includ...

雙向鍊錶和雙向迴圈鍊錶

和單向鍊錶相比,多了乙個前驅結點。如果他為空,那麼next和prior都指向自己。而對於雙迴圈鍊錶,只需要最後乙個元素的next指向head next,head next的prior指向最後乙個節點即可。新節點s插入鍊錶,s next給p結點,s prior給p prior,然後,p prior n...

迴圈鍊錶與雙向鍊錶

迴圈鍊錶 最後節點的next指標不指向null,直接改為指向首節點就行。迴圈列表不需要頭節點 include include includetypedef struct student lstudent,lpstudent void initlink lpstudent phead ptr next...