Java实现 循环链表

来源:互联网 发布:淘宝ccr手表怎么样 编辑:程序博客网 时间:2024/06/06 13:08

循环链表和单向链表的不同之处在于 :
单向链表tail.next指向null;
而循环链表tail.next指向head;

循环链表类:

public class CLink {    public Node head;    public CLink() {        this.head = new Node();        head.next = head;    }    public void andNode(String name) {        /**         * 创建需要and的节点         */        Node and = new Node(name,null);        Node p;        if(head.next == head) { //空表            and.next = head;            head.next = and;        }else {            p = head; //首节点            while (p.next != head) {//向下遍历                p = p.next;            }            and.next = p.next;            p.next = and;        }    }    public boolean delNode(String name) {        Node p = head;        while (p.next != head) {            if(p.next.name.equals(name)) {                p.next = p.next.next;                return true;            }else {                p = p.next;            }        }        return false;    }    /**     * data 之前插入节点     * @param data     * @param name     * @return     */    public boolean insertNode(String data,String name) {        Node p = head;        Node insertNode = new Node(name, null);        while (p.next != head) {            if(p.next.name.equals(data)) {                insertNode.next = p.next;                p.next = insertNode;                return true;            }            p = p.next;        }        return false;    }    public int size() {        Node p = head;        int size = 0;        while (p.next != head) {            p = p.next;            size ++;        }        return size;    }    public void display() {        Node p = head;        while (p.next != head) {            p = p.next;            System.out.println(p.name);        }    }}

节点类:

public class Node {    public String name;    public Node next;    public Node(String name, Node next) {        this.name = name;        this.next = next;    }    public Node() {        this.next = null;    }}

测试代码:

CLink cLink = new CLink();        cLink.andNode("1");        cLink.andNode("2");        cLink.andNode("3");        cLink.display();        System.out.println("-------------------------");        cLink.delNode("2");        cLink.display();        System.out.println("-------------------------");        System.out.println("size : " + cLink.size());        cLink.insertNode("3","2");        cLink.display();
0 0
原创粉丝点击