中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java中鏈表的實例

發布時間:2020-11-13 12:28:33 來源:億速云 閱讀:145 作者:小新 欄目:編程語言

這篇文章主要介紹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中鏈表的實例的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北票市| 临漳县| 祁连县| 朔州市| 库尔勒市| 峨边| 忻城县| 山东省| 托克托县| 黑水县| 鄢陵县| 安新县| 新龙县| 翁牛特旗| 吉安县| 得荣县| 正安县| 苏尼特左旗| 浦县| 军事| 普洱| 乐东| 丘北县| 临夏市| 沧源| 湖北省| 鱼台县| 平顺县| 阿勒泰市| 宣汉县| 柳州市| 丰县| 股票| 林州市| 霸州市| 丁青县| 崇义县| 马尔康县| 桦南县| 年辖:市辖区| 三亚市|