之前學習了單向鍊錶,沒寫到單向迴圈鍊錶,這裡簡單學習記錄一下,單向非迴圈鍊錶的尾節點元素的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 基本 頭插法建立雙向鍊錶...