JavaShuo
欄目
標籤
【轉帖】Java模擬的單雙、向鏈表
時間 2019-11-07
標籤
轉帖
java
模擬
鏈表
欄目
Java
简体版
原文
原文鏈接
下面演示的Java模擬的單向鏈表的實現
java
package
com.jadyer.sort;
/**
* 模擬單向鏈表
*
@author
hope
* @editor Jan 23, 2012 7:55:21 PM
* @see ==================================================================================================
* @see 【數據結構的分類:線性數據結構和非線性數據結構】
* @see 1)線性數據結構,包含:線性表、棧、隊列、串、數組、文件
* @see 2)非線性數據結構,含:樹、圖
* @see ==================================================================================================
* @see 【線性表的概述:其數據元素呈線性關係】
* @see 1)線性表中的全部數據元素在同一個線性表中必須是相同的數據類型
* @see 2)線性表中必存在惟一的稱爲"第一個"的數據元素,必存在惟一的稱爲"最後一個"的數據元素
* @see 3)線性表中除第一個元素外,每一個元素都有且只有一個前驅元素。除最後一個元素外,每一個元素都有且只有一個後繼元素
* @see 4)線性表的邏輯結構是n個數據元素的有限序列(a1,a2,a3,...,an),其中n爲線性表的長度(n>=0),n=0的表稱爲空表
* @see ==================================================================================================
* @see 【線性表的分類:按其存儲結構可分爲順序表和鏈表】
* @see 1)順序表:用順序存儲結構存儲的線性表稱爲順序表。即內存地址中的元素是按照循序連續存放的
* @see 也能夠說,將線性表中的數據元素依次存放在某個存儲區域中,所造成的表稱爲順序表
* @see 一維數組就是用順序方式存儲的線性表,因此ArrayList能夠看做是一種順序表
* @see 2)鏈表:用鏈式存儲結構存儲的線性表稱爲鏈表。即內存地址中的元素不是連續存放的
* @see ==================================================================================================
* @see 【stack】
* @see 棧(stack)也是一種特殊的線性表,是限定僅在表尾進行插入和刪除運算的線性表
* @see 棧的物理存儲能夠用順序存儲結構,也能夠用鏈式存儲結構
* @see 棧是一種後進先出(LIFO)的結構,棧的表尾稱爲棧頂(top),棧的表頭稱爲棧底(bottom)
* @see ==================================================================================================
* @see 【Queue】
* @see 隊列(Queue)是限定全部的插入只能在表的一端進行,而全部的刪除都在表的另外一端進行的線性表
* @see 隊列的物理存儲能夠用順序存儲結構,也能夠用鏈式存儲結構
* @see 隊列是一種先進先出(FIFO)的結構,其中容許插入的一端稱爲隊尾(Rear),容許刪除的一端稱爲隊頭(Front)(有點像等公交車)
* @see ==================================================================================================
*/
class
NodeOneWay {
String data;
//存放節點數據自己
NodeOneWay next;
//存放指向後一個節點的引用
public
NodeOneWay(){}
public
NodeOneWay(String data){
this
.data = data;
}
}
/**
* 單向鏈表測試類
* @author 宏宇
* @editor Jan 23, 2012 7:56:51 PM
*/
public
class
NodeOneWayTest {
public
static
void
main(String[] args) {
NodeOneWay node11 =
new
NodeOneWay(
"node11_data"
);
NodeOneWay node22 =
new
NodeOneWay(
"node22_data"
);
NodeOneWay node33 =
new
NodeOneWay(
"node33_data"
);
node11.next = node22;
//生成後繼關係
node22.next = node33;
System.out.println(node11.next.next.data);
//經過node11得到node33的data屬性值
/**
* 生成node44對象,並將其插入到node11和node22中間
*/
NodeOneWay node44 =
new
NodeOneWay(
"node44_data"
);
node11.next = node44;
//修改node11的後繼關係指向node44
node44.next = node22;
//修改node44的後繼關係指向node22
System.out.println(node11.next.next.next.data);
//經過node11得到node33的data屬性值
System.out.println(node11.next.next.data);
//經過node11得到node22的data屬性值
/**
* 刪除node44對象
*/
node11.next = node22;
//即node11的後繼關係指向node22,node44的後繼關係再也不指向node22
node44.next =
null
;
System.out.println(node11.next.next.data);
//經過node11得到node33的data屬性值
}
}
下面演示的是Java模擬雙向鏈表的實現
package
com.jadyer.sort;
/**
* 模擬雙向循環鏈表
*
@author
hope
* @editor Jan 23, 2012 8:16:34 PM
* @see java.util.ArrayList類的底層,是用數組實現的
* @see java.util.LinkedList類的底層,就是用雙向循環鏈表實現的
* @see 雙向鏈表內的每一個對象除了數據自己外,還有兩個引用,分別指向前一個元素和後一個元素
* @see 故add/remove操做時,LinkedList性能好一些,而get操做時,ArrayList性能好一些
*/
class
NodeTwoWay {
NodeTwoWay previous;
//存放指向前一個節點的引用
String data;
//存放節點數據自己
NodeTwoWay next;
//存放指向後一個節點的引用
public
NodeTwoWay(){}
public
NodeTwoWay(String data){
this
.data = data;
}
}
/**
* 雙向循環鏈表測試類
* @author 宏宇
* @editor Jan 23, 2012 8:21:33 PM
*/
public
class
NodeTwoWayTest {
public
static
void
main(String[] args) {
NodeTwoWay node11 =
new
NodeTwoWay(
"node11_data"
);
NodeTwoWay node22 =
new
NodeTwoWay(
"node22_data"
);
NodeTwoWay node33 =
new
NodeTwoWay(
"node33_data"
);
node11.previous = node33;
//生成前驅和後繼關係
node11.next = node22;
node22.previous = node11;
node22.next = node33;
node33.previous = node22;
node33.next = node11;
/**
* 生成node44對象,並將其插入到node11和node22中間
*/
NodeTwoWay node44 =
new
NodeTwoWay(
"node44_data"
);
node44.previous = node11;
node44.next = node22;
node11.next = node44;
node22.previous = node44;
/**
* 刪除node44對象
*/
node44.previous =
null
;
node44.next =
null
;
node11.next = node22;
node22.previous = node11;
}
}
相關文章
1.
java模擬雙向鏈表實現
2.
《鏈表》——單向鏈表和雙向鏈表(Java)
3.
Java 中的 LinkedList 是單向鏈表仍是雙向鏈表?
4.
單向鏈表與雙向鏈表
5.
圖解單向鏈表、雙向鏈表
6.
2.3.3單鏈表的雙向鏈表
7.
單向鏈表轉換爲雙向循環鏈表
8.
Java實現單向鏈表和雙向鏈表
9.
Java雙向鏈表簡單實現
10.
單/雙向鏈表淺談
更多相關文章...
•
jQuery Mobile 表單
-
jQuery Mobile 教程
•
Thymeleaf表單
-
Thymeleaf 教程
•
委託模式
•
算法總結-雙指針
相關標籤/搜索
單鏈表
轉帖
雙鏈
雙向
模擬
錶鏈
鏈表
單鏈
轉向
單向
Java
Hibernate教程
PHP教程
MyBatis教程
java
Java 8
Java Agent
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
說說Python中的垃圾回收機制?
2.
螞蟻金服面試分享,阿里的offer真的不難,3位朋友全部offer
3.
Spring Boot (三十一)——自定義歡迎頁及favicon
4.
Spring Boot核心架構
5.
IDEA創建maven web工程
6.
在IDEA中利用maven創建java項目和web項目
7.
myeclipse新導入項目基本配置
8.
zkdash的安裝和配置
9.
什麼情況下會導致Python內存溢出?要如何處理?
10.
CentoOS7下vim輸入中文
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
java模擬雙向鏈表實現
2.
《鏈表》——單向鏈表和雙向鏈表(Java)
3.
Java 中的 LinkedList 是單向鏈表仍是雙向鏈表?
4.
單向鏈表與雙向鏈表
5.
圖解單向鏈表、雙向鏈表
6.
2.3.3單鏈表的雙向鏈表
7.
單向鏈表轉換爲雙向循環鏈表
8.
Java實現單向鏈表和雙向鏈表
9.
Java雙向鏈表簡單實現
10.
單/雙向鏈表淺談
>>更多相關文章<<