读书人

循环链表的经典兑现(JAVA)

发布时间: 2012-12-26 14:39:28 作者: rapoo

循环链表的经典实现(JAVA)

public class LinkedListNode {//链表节点    public LinkedListNode previous;//前一节点    public LinkedListNode next;//后一节点    public Object object;//节点中存的值       public long timestamp;     public LinkedListNode(Object object, LinkedListNode next, LinkedListNode previous)    {        this.object = object;        this.next = next;        this.previous = previous;    }       public void remove() {//删除自己        previous.next = next;        next.previous = previous;    }        public String toString() {        return object.toString();    }}import java.util.*;public class LinkedList {//循环链表    //头指针,哑的,第一个节点的前面,最后一个节点的后面    private LinkedListNode head = new LinkedListNode("head", null, null);      public LinkedList() {        head.next = head.previous = head;    }       public LinkedListNode getFirst() {//获取循环链表的第一个节点        LinkedListNode node = head.next;        if (node == head) {            return null;        }        return node;    }       public LinkedListNode getLast() {//获取循环链表的最后一个节点        LinkedListNode node = head.previous;        if (node == head) {            return null;        }        return node;    }       public LinkedListNode addFirst(LinkedListNode node) {//将节点插入到链表的第一个位置,头节点之后.        node.next = head.next;        node.previous = head;        node.previous.next = node;        node.next.previous = node;        return node;    }       public LinkedListNode addFirst(Object object) {//将值插入到链表的第一个位置,头节点之后.        LinkedListNode node = new LinkedListNode(object, head.next, head);        node.previous.next = node;        node.next.previous = node;        return node;    }    public LinkedListNode addLast(Object object) {//将值插入到链表的最后一个位置,头节点之前        LinkedListNode node = new LinkedListNode(object, head, head.previous);        node.previous.next = node;        node.next.previous = node;        return node;    }     public void clear() {//清空循环链表        //Remove all references in the list.        LinkedListNode node = getLast();        while (node != null) {            node.remove();            node = getLast();        }        //Re-initialize.        head.next = head.previous = head;    }    public String toString() {        LinkedListNode node = head.next;        StringBuffer buf = new StringBuffer();        while (node != head) {            buf.append(node.toString()).append(", ");            node = node.next;        }        return buf.toString();    }}


源码:

读书人网 >编程

热点推荐