1.鍊錶介面定義
package com.ncs.datastructure.linklist;
public inte***ce ilinklist
2.雙向鍊錶的簡單實現
package com.ncs.datastructure.linklist;
import com.ncs.datastructure.linklist.singlelinklist.node;
/** * 雙向鍊錶的簡單實現
* @author yuanli
* */
public class doublelinklist implements ilinklist
public node(object data)
public node(object data, node prev, node next)
public object getdata()
public void setdata(object data)
public node getprev()
public void setprev(node prev)
public node getnext()
public void setnext(node next)
} //表示鍊錶的第乙個節點
protected node head;
//表示鍊錶的最後乙個節點
protected node tail;
public void addtohead(object data) else
} public void addtotail(object data) else
} public object deletefromhead() else
return delete;
} public object deletefromtail() else
return delete;
} public void deletenode(object data)
//如果是刪除第乙個節點
if (this.head.data.equals(data))
//如果是刪除最後乙個節點
if (this.tail.data.equals(data))
//刪除中間節點
for (node temp = this.head; temp.next != null; temp = temp.next)
}} }
public boolean iscontains(object data)
}} return false;
} public boolean isempty()
/*** 遍歷鍊錶的所有節點,並列印出節點資料資訊
*/public void printall() }
/*** @param args
*/public static void main(string args)
}
3.總結
雙向鍊錶彌補了單向鍊錶的不足,可以雙向獲取相鄰節點,比如刪除最後乙個節點時就不需要遍歷整個鍊錶,而可以直接操作最後乙個節點。
鍊錶學習筆記 雙向鍊錶
這次 寫的是迴圈鍊錶,用的是節點連線。雙向鍊錶相比與一般鍊錶要注意的地方就是 頭部插入和尾部插入 不要進行空指標操作。非鍊錶尾部的處理 if next null node pre current 如果是在頭部插如 則沒有 前節點 if i 0 tlist lenght return 0 dlinkl...
雙向鍊錶學習筆記
利用雙向鍊錶可以避免單鏈表的缺點,單鏈表的缺點就是查詢指標p指向的節點,必須從指標p開始遍歷整個鍊錶一遍,時間複雜度為o n 雙向鍊錶的每個節點有兩個指標乙個指標指向前驅節點,另乙個指向後繼節點 在雙向迴圈鍊錶中每個節點包括3個域,data域,prior域,next域。雙向鍊錶也分為帶頭節點和不帶頭...
C雙向鍊錶學習筆記
c雙向鍊錶學習筆記 語言 c語言 編譯環境 vc6.0 今天學習了kenneth a.reek著的 c和指標 一書,從中學習到了新知識,也發現了新問題,在這裡做一下記錄 首先先看一下 include includetypedef struct node node node rootp int dll...