java資料結構:鏈表

來源:互聯網
上載者:User

標籤:auth   ret   logs   pac   資料   遍曆   equals   family   font   

概念:鏈表可以使一種有序或無序的列表,內容通常儲存在記憶體中分散的位置上,有節點群組成,每一個節點的結構都相同,節點分為資料域和鏈域,資料域存放內容,鏈域存放的是下一個節點指標。

 

基本方法實現:

 新增節點:

 

刪除節點:

 

列印節點:

 

 

 

 

 

數組實現單鏈表:

建立節點類:Node.java

 

package LinkPackage;/** * @author zh * 節點模型 */public class Node {    String text;    Node next;    //頭結點構造器    public Node(){        this.text = "";        this.next = null;    }    //節點構造器    public Node(String text){        this.text = text;        this.next = next;    }    @Override    public String toString() {        return "Node{" +                "text=‘" + text + ‘\‘‘ +                ", next=" + next +                ‘}‘;    }}

 

建立鏈表類:Link.java

package LinkPackage;public class Link {    //頭結點    private Node head;    //構造鏈表    public Link(){        head = new Node();    }    //添加節點    public void addNode(String text){        //建立需要添加的節點        Node node = new Node(text);        //建立臨時節點        Node temp = head;        while(temp.next != null){            //將迴圈條件更改            temp = temp.next;        }        temp.next = node;    }    //計算長度    public int size(){        int len = 0;        Node temp = head;        while(temp.next != null){            len++;            temp = temp.next;        }        return len;    }    /**     * 列印鏈表節點     */    public void displayLink(){        //設定臨時節點        Node temp = head;        //開始遍曆        while(temp.next != null){            //輸出節點            System.out.print(temp.next.text+"===>");            //開始下一個節點            temp = temp.next;        }    }    /**     * show 刪除節點     */    public void delNode(String data){        //臨時節點        Node temp = head;        //開始迴圈遍曆鏈表        while(temp.next != null){            //找到刪除節點            if(temp.next.text.equals(data)){                //將鏈表的指標域指向下下個節點                temp.next = temp.next.next;                //退出迴圈                break;            }            //不滿足條件時,找到下個節點            temp = temp.next;        }    }    /**     * show 尋找節點     */    public Node findNode(String nodeName){        //設定臨時節點        Node temp = head;        //建立空節點        Node data = null;        //遍曆鏈表        while(temp.next != null){            //尋找條件符合            if(temp.next.text.equals(nodeName)){                //賦值                data = temp.next;                //退出迴圈                break;            }            //條件不符合進行下一個節點操作,也就是改變了迴圈條件            temp = temp.next;        }        //返回查詢結果        return data;    }    /**     * show 反轉單鏈表     */    public Node reverse(Node node){        if(node == null || node.next == null){            return node;        }        Node reNode = reverse(node.next);        node.next.next = node;        node.next = null;        return reNode;    }    public static void main(String args[]){        Link link = new Link();        link.addNode("測試鏈表節點新增一");        link.addNode("測試鏈表節點新增二");        link.addNode("測試鏈表節點新增三");        link.addNode("測試鏈表節點新增四");        link.addNode("測試鏈表節點新增五");        System.out.println(link.head);        System.out.println("鏈表長度:"+link.size());        link.displayLink();        System.out.println();        link.delNode("測試鏈表節點新增三");        System.out.println("鏈表長度:"+link.size());        link.displayLink();        System.out.println();        Node data = link.findNode("測試鏈表節點新增四");        System.out.print(data);        Node node = link.reverse(link.head);        while(node.next != null){            System.out.print(node.text+"===>");            node = node.next;        }    }}

 

java資料結構:鏈表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.