資料結構 雙向鍊錶(一)(java)

2021-08-15 07:25:01 字數 1644 閱讀 3364

之前學習了單向鍊錶,沒寫到單向迴圈鍊錶,這裡簡單學習記錄一下,單向非迴圈鍊錶的尾節點元素的next指向的是null,也就是沒有後繼節點,並且頭節點沒有前驅元素,就是一條鍊子,首尾不相連。

而單向迴圈鍊錶就是頭節點的前驅元素就是尾節點,尾節點的後繼元素是頭節點,next就不是null了。迴圈鍊錶就是首尾相連的鍊子。

現在學習一下雙向鍊錶的實現(非迴圈)

雙向鍊錶的每個元素都有乙個關鍵字和兩個指標prev+next,假設x是雙向鍊錶的乙個元素,x.prev指向x的前驅元素,x.next指向x的後繼元素。如果x.prev為null,說明x沒有前驅元素,則x就是鍊錶 的頭元素。如果x.next為null,說明x沒有後繼元素,則x就是鍊錶的尾元素。鍊錶的屬性head為null,說明鍊錶為空。

雙向鍊錶的實現其實也很簡單,比單向鍊錶多了乙個往前指的指標,單向鍊錶的實現可以看我之前的部落格~

1 寫乙個節點:

package com.yushen.linkedlist;

/** * 單向鍊錶

*  * @author yushen

*  */

public class node

}

雙向鍊錶的節點是這樣

2 這樣的話向鍊錶中加入元素:

**實現:

/**

* 對鍊錶進行新增元素

*/public void add(int data)

// 當前頭節點不為空,則將要新增的節點放到最前

newnode.next = head;

head.prev = newnode;

}

3 刪除乙個鍊錶的節點:

**實現:

/**

* 刪除鍊錶元素

* * @param data

*/public void delete(node tempnode)

while (null != tempnode.prev && tempnode.next != null)

}

4 獲取鍊錶長度**實現:

/**

* 返回鍊錶的長度

* * @return

*/public int getlength()

return length;

}

5 返回指定位置的元素:

/**

* 返回指定位置的元素

* * @param linkedlist

* @param index

* @return

*/public node get(int index)

return node;

}

基本操作就這麼些吧,我得去洗個衣服,有問題的話明天我再補一下~~~

java資料結構 雙向鍊錶

鍊錶是非常常見的一類線性結構的資料結構,每個節點包含有指標域和資料域,常見的包括單項列表 雙向列表 迴圈列表。這篇文章將詳細介紹雙向鍊錶。本文將介紹雙向鍊錶的插入節點 根據位置插入節點 刪除頭結點 刪除尾節點 刪除指定位置節點,檢視鍊錶元素 檢視頭結點 檢視尾節點 檢視鍊錶長度 判斷鍊錶是否為空。鍊...

JAVA 資料結構之雙向鍊錶

啊,寫完了雙端之後,雙向就好寫多了,重點是改變結點的next指向的時候,一定要一起把previous改了,並且要注意可能在last結點處進行指向修改時存在的的null情況。package linklist 結點定義 class doublynode public void display 寫乙個雙向...

資料結構 鍊錶 雙向鍊錶

注意typedef的定義結構,以及dinklist的資料型別 typedef struct dnode dnode,dinklist 注意插入第乙個結點時,prior指標的空指向問題 if l next null 若l後繼結點為空 則省略該步驟 l next prior p 基本 頭插法建立雙向鍊錶...