I學霸官方免費教程三十六:Java資料結構之雙向鏈表結構

來源:互聯網
上載者:User

標籤:java資料結構   雙向鏈表結構   java免費教程   java入門教程   java基礎教程   java培訓教程   

資料結構之雙向鏈表

例如:現有雙向鏈表TwoWayLinked中儲存著1,2,3,4四個元素,那麼集合對象中會有4個節點A、B、C、D,由上述結構可以知道,節點A中儲存著元素1和節點B;節點B中儲存著元素2和節點A和節點C,節點C中儲存著元素3和節點B和節點D,節點D中儲存著元素4和節點C。如果現在要在元素2和3中間插入一個元素5;
過程如下:
1、建立節點E,E中儲存元素5
2、將E中的上一個節點賦值為節點B
3、將B中的下一個節點修改為節點E
4、將E中的下一個節點賦值為節點C
5、將C中的上一個節點修改為節點E
從上述過程看,插入時沒有節點位置移動的操作,所以效率比較高;刪除的過程和插入過程相反

執行個體代碼:/** * TwoWayLinked類 * 示範雙向鏈表這一資料結構的實現 * @author 學霸聯盟 - 趙燦 */public class TwoWayLinked {// 用於儲存鏈表的第一個節點private Node first = null;// 用於儲存鏈表的最後一個節點private Node last = null;// 用於儲存集合長度private int size = 0;//添加元素的方法public void add(Object obj){//建立節點對象Node node = new Node();//節點中儲存添加的元素node.element = obj;//判斷第一個節點是否為nullif (first == null) {//第一個節點為說明是第一次添加元素first = node;//將第一個節點的前一個和後一個節點都設定成自己first.pre = node;first.next = node;}//判斷最後一個節點是否為nullif(last == null){/* * 如果最後一個節點也為null時 * last和first儲存的是同一個Node對象的地址 */last = node;}else{//如果最後一個節點不為null//新建立的節點前一個節點應該是上一次的最後一個節點node.pre = last;//新建立的節點下一個節點儲存自身node.next = node;//此時last中儲存的還是上一次添加元素時的最後一個節點//所以它的下一個節點應該設定為當前建立的節點last.next = node;//然後將last設定為當前建立的節點last = node;}//添加元素,長度加1size++;}/** * 根據下標擷取元素 */public Object get(int index) {//首先判斷傳入的下標是否超出長度if (index < size) {/* * 聲明一個Node類型的變數tagNode,並設定為first * 表示尋找的時候從第一個節點開始找 */Node tagNode = first;for (int i = 0; i < index; i++) {//擷取下一個節點,等價於i+1tagNode = tagNode.next;}//擷取找到的節點中的元素return tagNode.element;}//如果傳入的下標大於或等於長度,返回nullreturn null;}/** * 節點類(私人的成員內部類) *  * @author 學霸聯盟 - 趙燦 */private class Node {// 自身類型的變數,用於儲存前一個節點Node pre;// 自身類型的變數,用於儲存後一個節點Node next;// Object類型的變數,用於儲存元素Object element;}}/** * TwoWayLinkedTest類 * 用於測試雙向鏈表 * @author 學霸聯盟 - 趙燦 */public class TwoWayLinkedTest {public static void main(String[] args) {//建立雙線鏈表的對象TwoWayLinked twl = new TwoWayLinked();//向鏈表中添加值twl.add(1);twl.add(2);twl.add(3);twl.add(4);//擷取下標為2的值Object element = twl.get(2);//輸出值System.out.println(element);}}運行結果:3




本文出自 “學霸聯盟教育官方部落格” 部落格,轉載請與作者聯絡!

I學霸官方免費教程三十六:Java資料結構之雙向鏈表結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.