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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

java实现循环链表

發(fā)布時間:2024/4/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java实现循环链表 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前面已經(jīng)介紹了java實現(xiàn)單鏈表:http://www.cnblogs.com/lixiaolun/p/4643886.html

其實兩者的主要差別就在于如何判斷是否到了鏈表的結(jié)尾:

在單鏈表中

while(temp.next!=null) {temp=temp.next; }

在循環(huán)鏈表中

while(temp.next!=header) {temp=temp.next; }

?

下面是循環(huán)鏈表的代碼和測試代碼:

循環(huán)鏈表的代碼:

package circularlinkedlist;public class CircularLinkedList {class Element{public Object value=null;private Element next=null;}private Element header = null;//頭結(jié)點/*** 初始化鏈表* */void initList(){header = new Element();header.value=null;header.next=header;}/*** 插入鏈表* */void insertList(Object o){Element e=new Element();e.value=o;if(header.next==header)//第一次插入元素{header.next=e;e.next=header;}else//不是第一次插入元素{//temp引用在棧中,temp和header引用都指向堆中的initList()中new的Element對象Element temp = header;while(temp.next!=header)//尋找最后一個元素{temp=temp.next;}temp.next=e;e.next=header;//新插入的最后一個節(jié)點指向頭結(jié)點}}/*** 刪除鏈表中第i個元素* */void deletelist(Object o){Element temp =header;while(temp.next!=header){//判斷temp當前指向的結(jié)點的下一個結(jié)點是否是要刪除的結(jié)點if(temp.next.value.equals(o)){temp.next=temp.next.next;//刪除結(jié)點}else{temp=temp.next;//temp“指針”后移}}}/*** 獲取鏈表的第i個位置的元素* */Element getElement(int i){if(i<=0 || i>size()){System.out.println("獲取鏈表的位置有誤!返回null");return null;}else{int count =0;Element element = new Element();Element temp = header;while(temp.next!=header){count++;if(count==i){element.value=temp.next.value;}temp=temp.next;}return element;}}/*** 鏈表長度* */int size(){Element temp = header;int size=0;while(temp.next!=header){size++;temp=temp.next;}return size;}/*** 判斷鏈表中是否存在某元素* */Boolean isContain(Object o){Element temp =header;while(temp.next!=header){if(temp.next.value.equals(o)){return true;}temp=temp.next;}return false;}/*** 打印鏈表* */void print(){System.out.print("打印鏈表:");Element temp =header;while(temp.next!=header){temp=temp.next;System.out.print(temp.value+"\t");}System.out.println();} }

測試代碼:

package circularlinkedlist;public class CircularLinkedListMain {public static void main(String[] args) {CircularLinkedList clList = new CircularLinkedList();clList.initList();clList.insertList(1);clList.insertList(2);clList.insertList(3);clList.insertList(4);clList.insertList(5);clList.print();System.out.println("鏈表長度:"+clList.size());clList.deletelist(1);clList.deletelist(5);clList.print();System.out.println("第1個元素值為:"+clList.getElement(1).value);System.out.println("第2個元素值為:"+clList.getElement(2).value);System.out.println("第3個元素值為:"+clList.getElement(3).value);System.out.println(clList.isContain(2));System.out.println(clList.isContain(6)); // System.out.println(clList.isContain(5));}}

  

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

總結(jié)

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

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