双向链表(Java)

双向链表(Java)

双向链表:也叫双链表,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。
从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。
双向链表的结构特点如下:
在这里插入图片描述

较单链表相比优势:
  1. 插入删除不需要移动元素,可以自我删除
  2. 可双向遍历
代码如下:
public class Doubleloop {
	Doubleloop prior=this;//上一个结点
	Doubleloop next=this;//下一个结点
	int data;//结点数据
	public Doubleloop (int data) {
		this.data=data;
	}
	//增加结点
	public void after(Doubleloop node) {
		Doubleloop nextNext=next;//原来的下一个结点
		this.next=node;//把新结点作为当前结点的下一个结点
		node.prior=this;//把当前结点作为新结点的前一个结点
		node.next=nextNext;//让原来的下一个结点作为新结点的下一个结点
		nextNext.prior=node;//让原来的下一个结点的上一个结点为新结点
	}
	//获取下一个结点
	public Doubleloop next() {
		return this.next;
	}
	//获取上一个结点
	public Doubleloop prior() {
		return this.prior;
	}
	//获取数据
	public int getdata() {
		return this.data;
	}
	public static void main(String[] args) {
		//创建结点
		Doubleloop n1=new Doubleloop(1);
		Doubleloop n2=new Doubleloop(2);
		Doubleloop n3=new Doubleloop(3);
		//让结点间产生关系
		n1.after(n2);
		n2.after(n3);
		//查看上一个,下一个结点
		System.out.println(n1.prior().getdata());
		System.out.println(n1.getdata());
		System.out.println(n1.next().getdata());
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值