1.對於鍊錶結構,主要有單向鍊錶和雙向鍊錶之分,這裡討論的是雙向鍊錶,即節點中有兩個應用,left引用指向前乙個節點,right引用指向後面乙個節點。下面是乙個簡單的鍊錶:
2.**實現鍊錶節點結構
package com.lwk.linked;
/*** @author 李衛康
* 類說明:鍊錶結構 (單行和雙向)
*/public class node
public int getdata()
}
3.**實現鍊錶的頭部新增、尾部新增、指定索引新增
package com.lwk.linked;
/*** @author 李衛康
* 類說明:
*/public class ovoniclinked
/*** 頭部新增節點
* @param data
*/public void addheadnode(int data)else
//將first引用指向newnode
first=newnode;
}size++;
} /**
* 尾部新增資料
* @param data
*/public void addtailnode(int data)else
//將tail引用指向newnode
tail=newnode;
} size++;
} /**
* 在指定位置新增節點
* @param index
* @param data
*/public void addindexnode(int index,int data)
node newnode=new node(data);//新節點
node currentnode=first;//頭節點
node nextnode=null;//索引位置的下乙個節點,即要插入的索引的下一位
if(first==null)else if(index==size-1)else
}//斷開舊節點,插入新節點
newnode.right=nextnode;
nextnode.left=newnode;
currentnode.right=newnode;
newnode.left=currentnode;
} size++;
}public int size()
/*** 顯示資料
*/public void display()else
} }public static void main(string args)
}
測試結果:
注意:在實現鍊錶結構時,要注意鍊錶的頭headh和尾tail,要考慮多種情況。建議一邊畫圖一邊思考節點與節點之間的關係。
1.指定新增索引新增節點方法中:
(1)判斷了頭部節點是否為空
(2)判斷了新增的索引位置是否為最後乙個節點位置
(3)在鍊錶內部插入節點
2.新增頭部節點方法中:
(1)考慮頭部節點是否為空
(2)頭部節點不為空,則在頭部左邊插入,並判斷頭部節點的right是否有資料,如果沒有資料則tail引用指向first
3.新增尾部節點方法中:
(1)考慮頭部節點是否為空
(2)頭部節點不為空,則在尾部的右邊插入,並判斷尾部的left是否有資料,如果沒有資料則first 引用指向tail
鍊錶 java實現雙向鍊錶
前面已經總結了單向鍊錶,有興趣的兄弟可以進我部落格看一下。大家對比就可以看出,實現同樣的功能單向鍊錶要比雙向鍊錶痛苦的多。所以呀不斷地總結前輩留下的東西,是社會進步的基礎呀。可以直接看linkedlist的原始碼,其就是個雙向鍊錶。一 雙向鍊錶的結構。1 首先節點的結構,其中包含本節點內容,同時需要...
java實現雙向鍊錶
實現類,只實現了幾個比較簡單的功能 package 鍊錶.雙向鍊錶 program 資料結構 description 雙向鍊錶的實現 author zhongyusen create 2019 05 31 21 45 public class mylinklist public void add o...
雙向鍊錶結構實現
雙向鍊錶 雙向鍊錶是可以正向遍歷鍊錶節點和反向遍歷鍊錶節點的一種鍊錶資料結構。在單向鍊錶中,每個節點只有乙個指向下乙個節點的引用,在雙向鍊錶中節點新增乙個指向前乙個節點的引用,新增相應的反向遍歷方法,即可實現訪問前乙個節點的。新增和刪除節點時需要解決四個指向 引用 操作,相對來說更複雜,但是解決好在...