java中的双向链表

为了使得链表可以找到他的前驱,我们基于单链表设定了双向链表,在next的基础上

加了prio前驱用来指向节点前驱,让我们来了解一下。

初始化

class Entry{
		int data;
		Entry next;
		Entry prio;
		
		public Entry(){
			this.data =-1;
			this.next =null;
			this.prio = null;
		}
		public Entry(int val){
			this.data =val;
			this.next =null;
			this.prio = null;
		}
	}

同样我们需要构造方法

(1)头插

public void insertHead(int val){
		Entry cur = new Entry(val);
		if(head.next!=null){
			cur.next = head.next;
			head.next = cur;
			cur.prio = head ;
			
		}else{
			cur.next.prio = cur;
		}
	}

(2)尾插

public void insertTail(int val){
		Entry cur = new Entry(val);
		Entry entry = this.head;
		while(entry.next!=null){
			entry = entry.next;
		}
		entry.next = cur;
		cur.prio = entry;
	}

(3)删除特定的元素

public void deleteEntry(int val){
		Entry cur = this.head.next;
		while(cur!= null){
			if(cur.data == val){
				cur.prio.next = cur.next;
				if(cur.next!=null){
					cur.next.prio = cur.prio;
				}
			}else{
				cur = cur.next;
			}
		}
		
	}

(4)输出链表

public void show(){
		Entry cur = this.head.next;
		while(cur != null){
			System.out.println("Entry: "+cur.data);
			cur = cur.next;
		}
	}


以上是我总结的简单的方法

(新手入门,如有问题请多多指教)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值