//创建一个双向链表的类
class DoubleLinkedList
{
//先初始化一个头节点
private HeroNode2 head=new HeroNode2(0,"","");
//返回头节点
public HeroNode2 getHead()
{
return head;
}
//遍历双向链表
//显示链表
public void list()
{
if(head.next==null)
{
System.out.println("空");
return;
}
//头节点不能动
HeroNode2 temp=head.next;
while (temp!=null)
{
System.out.println(temp);
temp=temp.next;
}
}
//添加节点到单向链表
//不考虑顺序
//1.找到当前链表的的最后节点
//2.将最后节点的next指向新节点
public void add(HeroNode2 heroNode)
{
HeroNode2 temp=head;
//遍历链表 找到最后
while (temp.next!=null)
{
temp=temp.next;
}
temp.next=heroNode;
heroNode.pre=temp;
}
//修改节点
public void change(HeroNode2 newHeroNode)
{
if(head.next==null)
{
System.out.println("空链表");
return;
}
HeroNode2 temp=head.next;
boolean flag=false;
while (temp!=null)
{
if(temp.no==newHeroNode.no)
{
flag=true;
break;
}
temp=temp.next;
}
if(flag)
{
temp.name=newHeroNode.name;
temp.nickname=newHeroNode.nickname;
}
}
//删除
public void delete(int no)
{
if(head.next==null)
{
System.out.println("空链表");
return;
}
HeroNode2 temp=head.next;
boolean flag=false;
while (temp!=null)
{
if(temp.no==no)
{
flag=true;
break;
}
}
if(flag)
{
temp.pre.next=temp.next;
//如果是最后一个节点 就不要执行
if(temp.next!=null)
temp.next.pre=temp.pre;
}
}
}
//定义HeroNode2 每个HeroNode2就是一个节点
class HeroNode2
{
public int no;
public String name;
public String nickname;
public HeroNode2 next;
public HeroNode2 pre;
public HeroNode2 (int no,String name,String nickname) {
this.no=no;
this.name=name;
this.nickname=nickname;
}
//为了显示方法,重写ToString
@Override
public String toString()
{
return "HeroNode[no="+no+",name="+name+",nickname="+nickname+"]";
}
}
双向链表
最新推荐文章于 2024-09-13 11:50:55 发布