双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
双向链表增删改的实public class Doublelinked {
public static void main(String[] args) {
System.out.println("双向链表的测试");
linkedNode hero=new linkedNode(1,"宋江","及时雨");
linkedNode hero2=new linkedNode(2,"林冲","豹子头");
Doublelinklist doublelinklist=new Doublelinklist();
doublelinklist.addlinkedNode(hero);
doublelinklist.addlinkedNode(hero2);
doublelinklist.showlinkedNode();
System.out.println("删除后");
doublelinklist.dellinkedNode(hero2);
doublelinklist.showlinkedNode();
doublelinklist.update(hero2);
}
}
class Doublelinklist{
private linkedNode head=new linkedNode(0,"","");
public linkedNode getHead() {
return head;
}
public void addlinkedNode(linkedNode hero){
linkedNode temp=head;
while (true){
if (temp.next==null){
temp.next=hero;
hero.pre=temp;
break;
}
temp=temp.next;
}
}
//链表的修改
//链表的更新,根据no
public void update(linkedNode herolink){
//temp3是辅助结点
linkedNode temp3=head.next;
if (head.next==null){
System.out.println("链表为空");
}
while (true){
if(temp3.next==null){
System.out.println("没有这个序号的英雄");
break;
}
else if (temp3.next.no==herolink.no){
temp3.next.nNickName=herolink.nNickName;
temp3.next.name=herolink.name;
break;
}
temp3=temp3.next;
}
}
public void dellinkedNode(linkedNode hero){
linkedNode temp=head.next;
while (true){
if (temp==null){
System.out.println("不存在改结点");
break;
}
else if(temp.no==hero.no){
temp.pre.next=temp.next;
if (temp.next!=null){
temp.next.pre=temp.pre;}
break;
}
temp=temp.next;
}
}
public void showlinkedNode(){
linkedNode temp=head.next;
while (temp!=null){
System.out.println( temp.toString());
temp=temp.next;
}
}
}
class linkedNode{
public int no;
public String name;
public String nNickName;
public linkedNode next;//指向下一个结点
public linkedNode pre;//指向前一个结点
//构造方法
public linkedNode(int no,String name,String nNickName){
this.name=name;
this.no=no;
this.nNickName=nNickName;
}
@Override
public String toString() {
return "Herolink{" +
"no=" + no +
", name='" + name + ''' +
", nNickName='" + nNickName + '''+
'}';
}
}
现代码如下


