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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA单向链表实现

發(fā)布時(shí)間:2023/11/29 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA单向链表实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JAVA單向鏈表實(shí)現(xiàn)

單向鏈表

鏈表和數(shù)組一樣是一種最常用的線性數(shù)據(jù)結(jié)構(gòu),兩者各有優(yōu)缺點(diǎn)。數(shù)組我們知道是在內(nèi)存上的一塊連續(xù)的空間構(gòu)成,所以其元素訪問可以通過下標(biāo)進(jìn)行,隨機(jī)訪問速度很快,但數(shù)組也有其缺點(diǎn),由于數(shù)組的內(nèi)存是一次性申請的,就像基本數(shù)據(jù)類型一樣,一次性申請所需的空間,在數(shù)據(jù)量變動(dòng)很大的時(shí)候就容易導(dǎo)致預(yù)先申請的內(nèi)存不夠或內(nèi)存浪費(fèi)。在者就是在存的是有序數(shù)列時(shí)進(jìn)行數(shù)據(jù)插入會(huì)比較麻煩,所以鏈表就是為了彌補(bǔ)數(shù)組的不足的一種數(shù)據(jù)結(jié)構(gòu)。相反的,鏈表對于變動(dòng)很大的數(shù)據(jù)有很大的適應(yīng)性,而且其對于數(shù)據(jù)插入和刪除很方便。而鏈表的缺點(diǎn)就是對于內(nèi)存的浪費(fèi),鏈表除了存儲(chǔ)需要的數(shù)據(jù)還要存儲(chǔ)額外的指針。鏈表的節(jié)點(diǎn)示意圖如下:

?

看到指針你可能會(huì)想:“我們這不是java語言嗎?沒有指針啊!”,沒錯(cuò)!在我對java了解不是很深的時(shí)候我也這么想,但是我要說的是java雖然不允許程序員像c/c++那樣使用指針,但java語言本身的實(shí)現(xiàn)還是離不開指針的(變量名其實(shí)就是指向jvm中一塊內(nèi)存的指針,我就不詳述)。請看以下節(jié)點(diǎn)的代碼:

//節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)
private class Node{
private Object data=null;//數(shù)據(jù)域
private Node next=null;//下一個(gè)節(jié)點(diǎn)
private Node(Object data) {
this.data=data;
}
}

這里的節(jié)點(diǎn)class我是寫成inner class的形式,后面有完整代碼。還有一點(diǎn)就是這里object類型,這里也可以使用泛型

//鏈表數(shù)據(jù)結(jié)構(gòu)
public class SingleLinkList {
int size=0;//鏈表長度,可有可無,有的話很容易實(shí)現(xiàn)很多鏈表的特殊操作
Node head=null;//頭節(jié)點(diǎn)
public SingleLinkList() {
this.size=0;this.head=null;
}
}

有了這兩個(gè)類,然后再來實(shí)現(xiàn)鏈表的一些基本操作:插入頭節(jié)點(diǎn),刪除頭節(jié)點(diǎn),刪除指定節(jié)點(diǎn),查找指定節(jié)點(diǎn)。直接看完整源代碼。

package singleLinkList;
?
public class SingleLinkList {
?
int size=0;//鏈表長度
Node head=null;

public SingleLinkList() {
this.size=0;this.head=null;
}

//節(jié)點(diǎn)數(shù)據(jù)結(jié)構(gòu)
private class Node{
private Object data=null;//數(shù)據(jù)域
private Node next=null;//下一個(gè)節(jié)點(diǎn)
private Node(Object data) {
this.data=data;
}
}

//表頭添加元素
public Object addHead(Object data) {
Node newHead=new Node(data);
if(size==0) {
this.head=newHead;
}
else {
newHead.next=this.head;
this.head=newHead;
}
size++;
return data;
}

//刪除表頭元素
public Object deleteHead() {
if(size>0) {
Node node=this.head;
this.head=this.head.next;
size--;
}
return null;
}

//查找指定元素
public Node findData(Object data) {
if(size==0)return null;
Node cur=this.head;

轉(zhuǎn)載于:https://www.cnblogs.com/Davidhwj/p/10433387.html

總結(jié)

以上是生活随笔為你收集整理的JAVA单向链表实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。