数据结构(Java)--双链表

来源:互联网 发布:哈萨克歌曲软件baigie 编辑:程序博客网 时间:2024/06/05 16:21
一、双链表结点类
public class DoubleNode<T>{    public T data;                      public DoubleNode<T> prev, next;     //前驱,后继    public DoubleNode(T data, DoubleNode<T> prev,DoubleNode<T> next)  //构造方法重载    public DoubleNode(T data)    public DoubleNode()    public String toString()}


二、双链表的特征和操作
     
    • 空双链表,只有头结点。
         
 head.next==null且head.prev==null

    • 非空双链表,设p指向双链表中非两端的某个结点,有:
        
    p = p.next.prev = p.prev.next


  • 双链表的插入操作
q=new DoubleNode<T>(x);   q.prev = p;q.next = p.next;if (p.next!=NULL)//中间插入      p.next.prev = q;       p.next=p;


  • 双链表的删除操作 
p.prev.next = p.next;   //有p.prev!=nullif (p.next!=null)           //中间删除    p.next.prev = p.prev;三、循环双链表空循环双链表有head.next==head且head.prev==head


  •  循环双链表类CirDoublyList
public class CirDoublyList<T>        //循环双链表类{    DoubleNode<T> head;                  //头指针    CirDoublyList()                              //构造空表    boolean isEmpty()                          //判空    DoubleNode<T> insert(int i, T x) //插入x为第i个元素    DoubleNode<T> insert(T x)          //尾插入x       //实现以下方法    String toPreviousString()               //反序输出    T removeLast()                                //删除最后一个元素}


      • 插入x为第i个元素
 public DoubleNode<T> insert(int i, T x)


      •  尾插入x元素,O(1)
public DoubleNode<T> insert(T x)


      • 删除元素
T remove(int i)   //删除第i个元素T removeLast()   //删除最后一个元素



原创粉丝点击