日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java链表需要自己编写么_基于java的链表基础操作

發布時間:2024/7/23 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java链表需要自己编写么_基于java的链表基础操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈表結構是由一個或一個以上再內存上不連續存儲的元素結點連接而成的數據結構,鏈表的每個結點都有兩個部分,一個部分是存儲的數據,另一部分是指向下一結點的指針,既是下一節點的引用。

首先鏈表一定有一個頭結點,它是鏈表的第一個結點,他是鏈表的第一個結點,該結點的引用部分指向下一節點,下一結點引用部分指向下下一結點 。。。。直到最后一個結點,最后一個結點引用部分為空,標志著鏈表的結束,整個存儲形式呈一個長鏈狀

鏈表的基礎操作分為 追加結點 遍歷結點 刪除結點 插入結點等

首先是鏈表結點類

public class LinearList {

//鏈表數據部分

int i;

//鏈表指針,既是鏈表對下一節點的引用

LinearList nextNode;

}

追加結點

/**

* 鏈表末尾追加節點

* @param head (頭節點)

* @param i (追加節點的值)

* @return

*/

static int add(LinearList head,int i){

//判斷頭節點有沒有初始化

if(head == null){

return 0;

}

//保存頭節點引用

LinearList temp = head;

//實例化追加節點,保存最佳節點數據

LinearList addNode = new LinearList();

addNode.i = i;

addNode.nextNode = null;

/**

* 循環至鏈表最后一個節點

*/

while(temp.nextNode!=null){

temp = temp.nextNode;

}

//鏈表最后一個節點的指針指向追加的節點

temp.nextNode = addNode;

return 1;

}

遍歷結點

/**

* 遍歷鏈表的所有結點

* @param head

*/

static void printNode(LinearList head){

if (head == null){

return;

}

while(head != null){

System.out.println("正在遍歷:"+head.i);

//該結點操作完成,指針下移到下一節點

head = head.nextNode;

}

}

刪除結點

/**

* 刪除指定節點

* 首先循環移動指針查找到要刪除的結點

* 再通過指針互換使要刪除節點移出鏈表

* 返回值為頭節點

* 刪除頭節點則返回新的頭節點

*

*

* @param head

* @param delKey

* @return head

*/

static LinearList delete(LinearList head,int delKey){

LinearList node = null;

LinearList temp = null;

/**

* 如果要刪除的是頭節點

* 則返回刪除后新的頭節點

*

*/

if(head.i == delKey){

temp = head.nextNode;

head.nextNode = null;

return temp;

}

temp = head.nextNode;

while (temp != null){

if(temp.nextNode.i == delKey){

node = temp.nextNode.nextNode;

temp.nextNode = node;

return head;

}else{

temp = temp.nextNode;

}

}

return null;

}

插入結點

/**

* 在鏈表指定位置插入節點

* insertKey 插入節點的數據

* upperNodeKey 引用插入節點的元素的數據

*

* 通過find 方法返回鏈表中的插入位置的上一節點

* 改變插入節點的指針指向插入節點

* 插入節點的指針指向插入位置的下一節點

*

* @param head

* @param inserKey

* @param upperNodeKey

* @return

*/

static int insert(LinearList head,int inserKey,int upperNodeKey ){

//判斷頭節點有沒有初始化

if(head == null){

return 0;

}

//保存查找節點的結果

LinearList temp = find(head,upperNodeKey);

//保存temp 對下一節點的引用

LinearList temp1 = null;

//即將插入的新節點

LinearList insertNode = new LinearList();

insertNode.i = inserKey;

if (temp == null){

return 0;

}else{

//指針互換

temp1 = temp.nextNode;

temp.nextNode = insertNode;

insertNode.nextNode = temp1;

return 1;

}

}

總結

以上是生活随笔為你收集整理的java链表需要自己编写么_基于java的链表基础操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。