您好,登錄后才能下訂單哦!
這篇文章主要介紹java中鏈表的實例,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
LinkedList使用了循環雙向鏈表數據結構。與基于數組ArrayList相比,這是兩種截然不同的實現技術,這也決定了它們將適用于完全不同的工作場景。
鏈表(Linked list)是一種常見的基礎數據結構,是一種線性表,但是并不會按線性的順序存儲數據,而是在每一個節點里存到下一個節點的指針(Pointer)。
使用鏈表結構可以克服數組鏈表需要預先知道數據大小的缺點,鏈表結構可以充分利用計算機內存空間,實現靈活的內存動態管理。但是鏈表失去了數組隨機讀取的優點,同時鏈表由于增加了結點的指針域,空間開銷比較大。
實例:
package com.ys.link; public class DoublePointLinkedList { private Node head;//頭節點 private Node tail;//尾節點 private int size;//節點的個數 private class Node{ private Object data; private Node next; public Node(Object data){ this.data = data; } } public DoublePointLinkedList(){ size = 0; head = null; tail = null; } //鏈表頭新增節點 public void addHead(Object data){ Node node = new Node(data); if(size == 0){//如果鏈表為空,那么頭節點和尾節點都是該新增節點 head = node; tail = node; size++; }else{ node.next = head; head = node; size++; } } //鏈表尾新增節點 public void addTail(Object data){ Node node = new Node(data); if(size == 0){//如果鏈表為空,那么頭節點和尾節點都是該新增節點 head = node; tail = node; size++; }else{ tail.next = node; tail = node; size++; } } //刪除頭部節點,成功返回true,失敗返回false public boolean deleteHead(){ if(size == 0){//當前鏈表節點數為0 return false; } if(head.next == null){//當前鏈表節點數為1 head = null; tail = null; }else{ head = head.next; } size--; return true; } //判斷是否為空 public boolean isEmpty(){ return (size ==0); } //獲得鏈表的節點個數 public int getSize(){ return size; } //顯示節點信息 public void display(){ if(size >0){ Node node = head; int tempSize = size; if(tempSize == 1){//當前鏈表只有一個節點 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{//如果鏈表一個節點都沒有,直接打印[] System.out.println("[]"); } } }
以上是java中鏈表的實例的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。