迴圈鍊錶
迴圈鍊錶與順序鍊錶之間的區別:迴圈鍊錶最後乙個資料的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...