链表(一)插入节点、显示链表

链表介绍

在这里插入图片描述如下图,头结点指向地址为150,对应data域的值为a1,next域指向地址为110,,,,,
在这里插入图片描述

在这里插入图片描述
单链表实现

1,先定义一个HeroNode类,每一个HeroNode对象就是一个结点
类的属性有编号,姓名,昵称,next域
需要写构造函数
//为了显示方便,重写ToString
定义singlelinkedlist管理heronode
先初始化一个头结点,这个头结点一般不要动,如果动了,我们就找不到链表的最顶端,这个头结点我们不存放具体的数据
插入节点时,(当不考虑编号顺序)我们首先要找到最后一个结点,让这个结点的next指向新的结点
public void add(heronode heronode)
因为头结点不能动,因此我们需要一个辅助变量 heronode temp=head
遍历链表,找到最后,当temp.next=null,说明找到链表的最后了
如果没有找到最后,就将temp后移temp=temp.next
显示链表(遍历)也需要辅助变量(因为头结点不能动)
先判断链表是否为空,head.next=null
在while循环输出之后,需要后移
测试,先创建结点



在这里插入图片描述添加元素与显示元素代码

public class SingleLinkedList {
    public static void main(String[] args) {
        NodeHero hero1 = new NodeHero(1, "宋江", "及时雨");
        NodeHero hero2 = new NodeHero(2, "卢俊义", "玉麒麟");
        NodeHero hero3 = new NodeHero(3, "吴用", "智多星");
        NodeHero hero4 = new NodeHero(4, "林冲", "豹子头");
        NodeManager singleLinkedList = new NodeManager();
        singleLinkedList.add(hero1);
        singleLinkedList.add(hero4);
        singleLinkedList.add(hero2);
        singleLinkedList.add(hero3);
        singleLinkedList.list();
    }
}
class NodeManager
{
   private  NodeHero head=new NodeHero(0,"","");

    public void add(NodeHero heronode)
    {
        NodeHero temp=head;
       while(true)
     {
         if (temp.next==null)
       {
           temp.next=heronode;
           break;
       }
       else
         {
             temp=temp.next;
         }
     }


    }
    public void list()
    {
       if(head.next==null)
       {
           System.out.println("链表为空");
           return;
       }
       NodeHero temp=head.next;
       while(true)
       {
           if(temp == null) {
               break;
           }
           System.out.println(temp);
           temp=temp.next;
       }
    }
}

class NodeHero
{

    private int num;
    private String name;
    private String nickName;
    public NodeHero next;
    public  NodeHero(int num, String name,String nickName)
    {
        this.name=name;
        this.num=num;
        this.nickName=nickName;
    }

    @Override
    public String toString() {
        return "NodeHero{" +
                "num=" + num +
                ", name='" + name + '\'' +
                ", nickName='" + nickName + '\'' +
                '}';
    }
}

结果

NodeHero{num=1, name='宋江', nickName='及时雨'}
NodeHero{num=4, name='林冲', nickName='豹子头'}
NodeHero{num=2, name='卢俊义', nickName='玉麒麟'}
NodeHero{num=3, name='吴用', nickName='智多星'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值