为了使得链表可以找到他的前驱,我们基于单链表设定了双向链表,在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;
}
}
以上是我总结的简单的方法
(新手入门,如有问题请多多指教)