標籤:java資料結構 單項鏈表結構 java免費教程 java入門教程 java基礎教程 java培訓教程
資料結構之單向鏈表
例如:現有雙向鏈表OneWayLinked中儲存著1,2,3,4四個元素,那麼集合對象中會有4個節點A、B、C、D,由上述結構可以知道,節點A中儲存著元素1和節點B;節點B中儲存著元素2和節點C,節點C中儲存著元素3和節點D,節點D中儲存著元素4和null。如果現在要在元素2和3中間插入一個元素5;
過程如下:
1、建立節點E,E中儲存元素5
2、將B中的下一個節點修改為節點E
3、將E中的下一個節點賦值為節點C
從上述過程看,插入時沒有節點位置移動的操作,所以效率比較高;刪除的過程和插入過程相反;和雙向鏈表的區別就是一個節點中不再儲存上一個節點
執行個體代碼:/** * OneWayLinked類 * 示範雙向鏈表這一資料結構的實現 * @author 學霸聯盟 - 趙燦 */public class OneWayLinked {// 用於儲存鏈表的第一個節點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.next = node;}//判斷最後一個節點是否為nullif(last == null){/* * 如果最後一個節點也為null時 * last和first儲存的是同一個Node對象的地址 */last = node;}else{//如果最後一個節點不為null//新建立的節點下一個節點儲存自身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 next;// Object類型的變數,用於儲存元素Object element;}}/** * OneWayLinkedTest類 * 用於測試雙向鏈表 * @author 學霸聯盟 - 趙燦 */public class OneWayLinkedTest {public static void main(String[] args) {//建立雙線鏈表的對象OneWayLinked twl = new OneWayLinked();//向鏈表中添加值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資料結構之單向鏈表結構