這篇文章主要介紹java中鏈表的實(shí)例,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)公司主營企業(yè)營銷型網(wǎng)站建設(shè),為眾多企業(yè)提供了品牌網(wǎng)站制作服務(wù),建網(wǎng)站哪家好?擁有多年的網(wǎng)絡(luò)營銷推廣流程,能夠?yàn)槠髽I(yè)定制化制作網(wǎng)站服務(wù),在公司網(wǎng)站建設(shè)維護(hù)方面成績(jī)突出。LinkedList使用了循環(huán)雙向鏈表數(shù)據(jù)結(jié)構(gòu)。與基于數(shù)組ArrayList相比,這是兩種截然不同的實(shí)現(xiàn)技術(shù),這也決定了它們將適用于完全不同的工作場(chǎng)景。
鏈表(Linked list)是一種常見的基礎(chǔ)數(shù)據(jù)結(jié)構(gòu),是一種線性表,但是并不會(huì)按線性的順序存儲(chǔ)數(shù)據(jù),而是在每一個(gè)節(jié)點(diǎn)里存到下一個(gè)節(jié)點(diǎn)的指針(Pointer)。
使用鏈表結(jié)構(gòu)可以克服數(shù)組鏈表需要預(yù)先知道數(shù)據(jù)大小的缺點(diǎn),鏈表結(jié)構(gòu)可以充分利用計(jì)算機(jī)內(nèi)存空間,實(shí)現(xiàn)靈活的內(nèi)存動(dòng)態(tài)管理。但是鏈表失去了數(shù)組隨機(jī)讀取的優(yōu)點(diǎn),同時(shí)鏈表由于增加了結(jié)點(diǎn)的指針域,空間開銷比較大。
實(shí)例:
package com.ys.link; public class DoublePointLinkedList { private Node head;//頭節(jié)點(diǎn) private Node tail;//尾節(jié)點(diǎn) private int size;//節(jié)點(diǎn)的個(gè)數(shù) private class Node{ private Object data; private Node next; public Node(Object data){ this.data = data; } } public DoublePointLinkedList(){ size = 0; head = null; tail = null; } //鏈表頭新增節(jié)點(diǎn) public void addHead(Object data){ Node node = new Node(data); if(size == 0){//如果鏈表為空,那么頭節(jié)點(diǎn)和尾節(jié)點(diǎn)都是該新增節(jié)點(diǎn) head = node; tail = node; size++; }else{ node.next = head; head = node; size++; } } //鏈表尾新增節(jié)點(diǎn) public void addTail(Object data){ Node node = new Node(data); if(size == 0){//如果鏈表為空,那么頭節(jié)點(diǎn)和尾節(jié)點(diǎn)都是該新增節(jié)點(diǎn) head = node; tail = node; size++; }else{ tail.next = node; tail = node; size++; } } //刪除頭部節(jié)點(diǎn),成功返回true,失敗返回false public boolean deleteHead(){ if(size == 0){//當(dāng)前鏈表節(jié)點(diǎn)數(shù)為0 return false; } if(head.next == null){//當(dāng)前鏈表節(jié)點(diǎn)數(shù)為1 head = null; tail = null; }else{ head = head.next; } size--; return true; } //判斷是否為空 public boolean isEmpty(){ return (size ==0); } //獲得鏈表的節(jié)點(diǎn)個(gè)數(shù) public int getSize(){ return size; } //顯示節(jié)點(diǎn)信息 public void display(){ if(size >0){ Node node = head; int tempSize = size; if(tempSize == 1){//當(dāng)前鏈表只有一個(gè)節(jié)點(diǎn) System.out.println("["+node.data+"]"); return; } while(tempSize>0){ if(node.equals(head)){ System.out.print("["+node.data+"->"); }else if(node.next == null){ System.out.print(node.data+"]"); }else{ System.out.print(node.data+"->"); } node = node.next; tempSize--; } System.out.println(); }else{//如果鏈表一個(gè)節(jié)點(diǎn)都沒有,直接打印[] System.out.println("[]"); } } }
以上是java中鏈表的實(shí)例的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!