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.
vs2019運行opencv圖片顯示代碼時,窗口亂碼
2.
app自動化 - 元素定位不到?別慌,看完你就能解決
3.
在Win8下用cisco ××× Client連接時報Reason 422錯誤的解決方法
4.
eclipse快速補全代碼
5.
Eclipse中Java/Html/Css/Jsp/JavaScript等代碼的格式化
6.
idea+spring boot +mabitys(wanglezapin)+mysql (1)
7.
勒索病毒發生變種 新文件名將帶有「.UIWIX」後綴
8.
【原創】Python 源文件編碼解讀
9.
iOS9企業部署分發問題深入瞭解與解決
10.
安裝pytorch報錯CondaHTTPError:******
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
java模擬雙向鏈表實現
2.
《鏈表》——單向鏈表和雙向鏈表(Java)
3.
Java 中的 LinkedList 是單向鏈表仍是雙向鏈表?
4.
單向鏈表與雙向鏈表
5.
圖解單向鏈表、雙向鏈表
6.
2.3.3單鏈表的雙向鏈表
7.
單向鏈表轉換爲雙向循環鏈表
8.
Java實現單向鏈表和雙向鏈表
9.
Java雙向鏈表簡單實現
10.
單/雙向鏈表淺談
>>更多相關文章<<