亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java語言中鏈表和雙向鏈表

2020-03-24 19:28:16
字體:
供稿:網(wǎng)友
鏈表是一種重要的數(shù)據(jù)結(jié)構(gòu),在程序設計中占有很重要的地位。C語言和C++語言中是用指針來實現(xiàn)鏈表結(jié)構(gòu)的,由于Java語言不提供指針,所以有人認為在Java語言中不能實現(xiàn)鏈表,其實不然,Java語言比C和C++更容易實現(xiàn)鏈表結(jié)構(gòu)。Java語言中的對象引用實際上是一個指針(本文中的指針均為概念上的意義,而非語言提供的數(shù)據(jù)類型),所以我們可以編寫這樣的類來實現(xiàn)鏈表中的結(jié)點。

html' target='_blank'>class Node
{
Object data;
Node next;//指向下一個結(jié)點
}

將數(shù)據(jù)域定義成Object類是因為Object類是廣義超類,任何類對象都可以給其賦值,增加了代碼的通用性。為了使鏈表可以被訪問還需要定義一個表頭,表頭必須包含指向第一個結(jié)點的指針和指向當前結(jié)點的指針。為了便于在鏈表尾部增加結(jié)點,還可以增加一指向鏈表尾部的指針,另外還可以用一個域來表示鏈表的大小,當調(diào)用者想得到鏈表的大小時,不必遍歷整個鏈表。下圖是這種鏈表的示意圖: 鏈表的數(shù)據(jù)結(jié)構(gòu)

我們可以用類List來實現(xiàn)鏈表結(jié)構(gòu),用變量Head、Tail、Length、Pointer來實現(xiàn)表頭。存儲當前結(jié)點的指針時有一定的技巧,Pointer并非存儲指向當前結(jié)點的指針,而是存儲指向它的前趨結(jié)點的指針,當其值為null時表示當前結(jié)點是第一個結(jié)點。那么為什么要這樣做呢?這是因為當刪除當前結(jié)點后仍需保證剩下的結(jié)點構(gòu)成鏈表,如果Pointer指向當前結(jié)點,則會給操作帶來很大困難。那么如何得到當前結(jié)點呢,我們定義了一個方法cursor(),返回值是指向當前結(jié)點的指針。類List還定義了一些方法來實現(xiàn)對鏈表的基本操作,通過運用這些基本操作我們可以對鏈表進行各種操作。例如reset()方法使第一個結(jié)點成為當前結(jié)點。insert(Object d)方法在當前結(jié)點前插入一個結(jié)點,并使其成為當前結(jié)點。remove()方法刪除當前結(jié)點同時返回其內(nèi)容,并使其后繼結(jié)點成為當前結(jié)點,如果刪除的是最后一個結(jié)點,則第一個結(jié)點變?yōu)楫斍敖Y(jié)點。

鏈表類List的源代碼如下:

import java.io.*;
public class List
{
/*用變量來實現(xiàn)表頭*/
private Node Head=null;
private Node Tail=null;
private Node Pointer=null;
private int Length=0;
public void deleteAll()
/*清空整個鏈表*/
{
Head=null;
Tail=null;
Pointer=null;
Length=0;
}
public void reset()
/*鏈表復位,使第一個結(jié)點成為當前結(jié)點*/
{
Pointer=null;
}
public boolean isEmpty()
/*判斷鏈表是否為空*/
{
return(Length==0);
}
public boolean isEnd()
/*判斷當前結(jié)點是否為最后一個結(jié)點*/
{
if(Length==0)
throw new java.lang.NullPointerException();
else if(Length==1)
return true;
else
return(cursor()==Tail);
}
public Object nextNode()
/*返回當前結(jié)點的下一個結(jié)點的值,并使其成為當前結(jié)點*/
{
if(Length==1)
throw new java.util.NoSuchElementException();
else if(Length==0)
throw new java.lang.NullPointerException();
else
{
Node temp=cursor();
Pointer=temp;
if(temp!=Tail)
return(temp.next.data);
else
throw new java.util.NoSuchElementException();
}
}
public Object currentNode()
/*返回當前結(jié)點的值*/
{
Node temp=cursor();
return temp.data;
}

public void insert(Object d)
/*在當前結(jié)點前插入一個結(jié)點,并使其成為當前結(jié)點*/
{
Node e=new Node(d);
if(Length==0)
{
Tail=e;
Head=e;
}
else
{
Node temp=cursor();
e.next=temp;
if(Pointer==null)
Head=e;
else
Pointer.next=e;
}
Length++;
}
public int size()
/*返回鏈表的大小*/
{
return (Length);
}
public Object remove()
/*將當前結(jié)點移出鏈表,下一個結(jié)點成為當前結(jié)點,如果移出的結(jié)點是最后一個結(jié)點,則第一個結(jié)點成為當前結(jié)點*/
{
Object temp;
if(Length==0)
throw new java.util.NoSuchElementException();
else if(Length==1)
{
temp=Head.data;
deleteAll();
}
else
{
Node cur=cursor();
temp=cur.data;
if(cur==Head)
Head=cur.next;
else if(cur==Tail)
{
Pointer.next=null;
Tail=Pointer;
reset();
}
else
Pointer.next=cur.next;
Length--;
}
return temp;
}
private Node cursor()
/*返回當前結(jié)點的指針*/
{
if(Head==null)
throw new java.lang.NullPointerException();
else if(Pointer==null)
return Head;
else
return Pointer.next;
}
public static void main(String[] args)
/*鏈表的簡單應用舉例*/
{
List a=new List ();
for(int i=1;i i++)
a.insert(new Integer(i));
System.out.println(a.currentNode());
while(!a.isEnd())
System.out.println(a.nextNode());
a.reset();
while(!a.isEnd())
{
a.remove();
}
a.remove();
a.reset();
if(a.isEmpty())
System.out.println("There is no Node in List /n");
System.in.println("You can press return to quit/n");
try
{
System.in.read();
//確保用戶看清程序運行結(jié)果
}
catch(IOException e)
{}
}
}
class Node
/*構(gòu)成鏈表的結(jié)點定義*/
{
Object data;
Node next;
Node(Object d)
{
data=d;
next=null;
}
}

讀者還可以根據(jù)實際需要定義新的方法來對鏈表進行操作。雙向鏈表可以用類似的方法實現(xiàn)只是結(jié)點的類增加了一個指向前趨結(jié)點的指針。

可以用這樣的代碼來實現(xiàn):

class Node
{
Object data;
Node next;
Node previous;
Node(Object d)
{
data=d;
next=null;
previous=null;
}
}

當然,雙向鏈表基本操作的實現(xiàn)略有不同。鏈表和雙向鏈表的實現(xiàn)方法,也可以用在堆棧和隊列的實現(xiàn)中,這里就不再多寫了,有興趣的讀者可以將List類的代碼稍加改動即可。html教程

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
神马午夜伦理不卡| 欧美电影在线观看网站| 国产精品久久久久久免费观看| 97久久精品视频| 欧美黑人巨大| 久草在线资源福利站| 精品视频偷偷看在线观看| 26uuu国产日韩综合| 国内自拍一区| 日本少妇高潮喷水xxxxxxx| 午夜精品福利一区二区| 一区二区三区四区五区在线| 88av看到爽| 欧美日韩精品在线观看视频| wwwxxx色| 99久久婷婷国产综合精品| 九九精品视频在线看| 激情综合色播五月| 国产精品久久久久久一区二区| 黄频在线免费观看| 亚洲aaa在线观看| 天天干在线视频论坛| 成人在线影视| 久久久久麻豆v国产| 黄色在线免费观看大全| 亚洲电影第三页| 老**午夜毛片一区二区三区| 国产亚洲一区二区三区| 最近高清中文在线字幕在线观看| 亚洲三区在线观看| 国产a视频精品免费观看| 国产精品久久综合青草亚洲AV| 欧美激情一级精品国产| 精品夜夜嗨av一区二区三区| bdsm精品捆绑chinese| 神马日本精品| 亚洲国产精品成人综合久久久| 欧美日韩aaa| 精品在线欧美视频| 欧美在线观看视频一区二区三区| 成人爽a毛片一区二区| 亚洲一区二区视频| 日本不卡一区在线| 欧美乱妇视频| 欧美一区二区大片| 亚洲不卡中文字幕| 中文字幕理论片| 欧美美女视频| 国产无码精品视频| 欧美精品日韩综合在线| 日本xxxx人| 天天性天天草| 午夜精品网站| 欧美日韩国产综合一区二区三区| 奇米777日韩| 国产普通话bbwbbwbbw| 日本少妇一区二区三区| 亚洲 欧美 中文字幕| 亚洲欧美精品一区| 国产一区二区三区黄网站| 日本一区二区综合亚洲| 鲁啊鲁视频在线精品| 极品粉嫩小仙女高潮喷水久久| 亚洲色无码播放| 精品久久久久久中文字幕动漫| 男女裸体影院高潮| 韩国精品一区二区三区六区色诱| 国产精品 欧美 日韩| 色婷婷狠狠综合| 日韩免费性生活视频播放| 日本熟妇一区二区| 久久久精品国产99久久精品芒果| 特级西西人体www高清大胆| 国产乡下妇女三片| 亚洲欧美日韩偷拍| 精品久久ai电影| 97超级碰在线看视频免费在线看| 国产精品第四页| 欧美极品色图| 国产精品中文字幕久久久| 特黄aaaaaaaaa真人毛片| 极品美女一区二区三区| 一二三中文字幕在线| 精品亚洲一区二区三区在线观看| 98国产高清一区| 久草热在线观看| 久久久精品国产sm调教网站| 激情亚洲一区二区三区四区| 老司机av在线免费看| 国产在线观看免费网站| 国产97在线视频| 92看片淫黄大片一级| 国内精品久久久久久久久久久| 91综合免费在线| 不卡专区在线| 超碰在线人人干| 午夜精品一区二区三区在线视频| 八戒八戒神马在线电影| 国产精品19p| 国产艳妇疯狂做爰视频| 这里只有精品久久| 一区二区三区免费高清视频| 福利影院在线看| 亚州一区二区| 国产日韩欧美| 免费大片黄在线观看视频网站| www.豆豆成人网.com| 亚洲图片视频小说| 美腿丝袜亚洲图片| 国产精品成人播放| aⅴ色国产欧美| 色播五月激情五月| 婷婷午夜社区一区| 日本精品在线免费观看| 亚洲福利天堂| 成人做爽爽免费视频| 美女把尿口扒开让男人桶在线观看| 手机在线免费毛片| 中文字幕一区二区三区在线不卡| 久久久久久久久久国产| 99久久精品费精品国产风间由美| 人妻少妇精品视频一区二区三区| 最好看的2019年中文视频| 欧美一区自拍| 偷拍亚洲欧洲综合| 亚洲高潮女人毛茸茸| 国产区成人精品视频| 无码视频一区二区三区| 嫩呦国产一区二区三区av| 99久久精品免费看国产免费软件| 亚洲精品久久久久久久久久久久| 欧美一区二区观看视频| 国产乱码精品一区二区三区卡| 日韩av资源站| 精品国产福利在线| 青草视频在线免费直播| 国产亚洲激情视频在线| 久久中文字幕av一区二区不卡| 黑人巨茎大战欧美白妇| 4虎在线播放1区| 三级在线免费看| 国产自产自拍视频在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 男女啪啪免费观看| 中文字幕欧美日韩一区二区三区| 日韩精品一区二区三区中文字幕| 亚洲美女综合网| 无码粉嫩虎白一线天在线观看| 亚洲国产日韩在线| 欧美综合一区二区三区| 丰满人妻一区二区三区四区| 99在线视频首页| 日韩免费黄色av| 欧美v亚洲v综合ⅴ国产v| 欧美日韩中国免费专区在线看| 精品国产乱码久久久久久88av| 久久精品日产第一区二区三区乱码| 2024短剧网剧在线观看| 日本一区二区三区久久| 亚洲一区二区三区免费在线观看| 九九热精品国产| 好吊视频在线观看| 91嫩草丨国产丨精品| 免费视频一区二区| 成人国产精品日本在线| 亚洲嫩模很污视频| 性xxxx搡xxxxx搡欧美| 亚洲 小说区 图片区 都市| 欧美日韩在线视频免费观看| 国产一区二区视频在线观看| 欧美在线激情| 麻豆成人av| porn视频在线观看| yjizz视频网站在线播放| 激情视频在线观看一区二区三区| 91看片淫黄大片一级| www.久久.com| 成人91在线观看| 国产精品免费在线免费| av网站免费在线观看| 最新中文字幕在线观看视频| 国产高清一级毛片在线不卡| 在线日韩欧美| gogogogo高清视频在线| 国产午夜精品一区二区三区欧美| 夜夜春成人影院| 日本精品www| 牛牛视频精品一区二区不卡| 天堂电影一区| 久久久精品欧美丰满| 97国产精品视频| 神马午夜伦理不卡| 国产美女扒开尿口久久久| 亚洲一区在线播放| 色呦呦中文字幕| 欧美日韩精品一区二区三区在线观看| 久久久久亚洲av无码专区| 岛国av一区二区三区| 少妇无码一区二区三区| 国产乱码精品一区二区三区四区| 国偷自产av一区二区三区| 亚洲区一区二| 女囚岛在线观看| 欧美亚洲综合视频| 综合日韩在线| 精品亚洲免费视频| 国产第一页在线视频| 日韩中文在线中文网在线观看| 国产日产一区| 欧美永久精品| 日本美女视频一区二区| 天天操天天操天天操天天操天天操| 香港伦理在线| 亚洲欧洲综合另类| 影音先锋男人的网站| 在线视频不卡一区二区三区| 成人免费在线观看| 日韩视频在线观看国产| 日韩不卡视频在线观看| 性欧美大战久久久久久久| 欧美一级二级三级蜜桃| 色哟哟入口国产精品| 精品国产综合区久久久久久| 视色视频在线观看| 91av网站在线播放| av在线免费观看网站| 欧美日产国产精品| 亚洲欧美制服综合另类| 色影视在线视频资源站| 成人国产亚洲精品a区天堂华泰| 黑人巨大精品欧美一区二区小视频| 中文字幕综合| 女女调教被c哭捆绑喷水百合| 国产高清亚洲| 99.玖玖.com| 亚洲图片综合网| 久久久久99精品| 亚洲精品自在在线观看| 欧洲福利电影| 高清不卡在线观看av| 国产探花在线精品一区二区| 日韩亚洲综合在线| 国产欧美一区二区三区网站| 一区二区三区欧美日| 日韩一级片免费看| 你懂的网站在线观看网址| 黄页网站大全在线免费观看| 成 年 人 黄 色 大 片大 全| 向日葵视频成人app网址| 欧美色精品在线视频| 日韩影片在线观看| 欧美91精品久久久久国产性生爱| 黄色免费观看视频网站| 精品一区二区三区在线观看国产| 国产亚洲欧美久久久久| 97在线视频免费观看完整版| 久久久久久久一区二区| 国产福利电影在线播放| 亚洲一级一级97网| 麻豆一区在线观看| 8050国产精品久久久久久| 成人精品一区二区三区校园激情| 亚洲麻豆国产自偷在线| 青青草国产成人99久久| 成人黄色国产精品网站大全在线免费观看| 在线成人亚洲| 久久香蕉av| 日韩加勒比系列| 国产精品99精品| 国产精品久久久999| 欧美成人午夜电影| 久久精品亚洲麻豆av一区二区| 久久精品五月婷婷| 成人一区二区三区| 日本超碰在线观看| 91国视频在线| 久久毛片亚洲| 欧美狂野激情性xxxx在线观| 精品日产卡一卡二卡麻豆| 九九热在线免费视频| 女人公敌韩国| 蜜桃传媒麻豆第一区在线观看| 青青草原成人在线视频| 国产精品久久久一本精品| 国产性色av一区二区| 免费av毛片在线看| 特级西西444| 五月天激情综合| xxxwww在线观看| 中文精品在线观看| 在线观看的av| www日韩在线| 三上悠亚在线一区二区| 日韩欧美123| 欧洲av无码放荡人妇网站| 久久91麻豆精品一区| 久久久久久久久国产一区| a毛片在线播放| 久久91超碰青草在哪里看| 成人高清伦理免费影院在线观看| 成人交换视频| 亚洲午夜无码久久久久| 国产一区二区三区不卡免费观看| 久久久精品日韩| 久久久久一本一区二区青青蜜月| 99精品国产在热久久婷婷| 99久久综合狠狠综合久久aⅴ| 国产丝袜精品视频| 欧美大片大片在线播放| 福利所第一导航| 神马午夜伦理不卡| 亚洲国产片色| 欧美日韩在线视频免费观看| 国产精品免费人成网站酒店| 中国女人内谢69视频| 欧美另类xxx| 欧美亚韩一区二区三区| www日本高清| 久久国产乱子精品免费女| 少妇精品在线| 亚洲视频在线观看日本a| 亚洲美女av在线| 久草在线新资源| 92精品国产成人观看免费| 在线观看av网页| 国产日韩成人内射视频| 天堂免费视频| 久久人人爽人人片|