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

这篇博客探讨了双链表的数据结构,包括空双链表仅含头结点的情况。重点讲述了非空双链表中如何进行插入和删除操作,如在双链表中插入元素为第i个元素以及尾部插入元素(常数时间复杂度)。同时提到了循环双链表类CirDoublyList的相关实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、双链表结点类
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!=null
if (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()   //删除最后一个元素



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值