单向链表的实现

public class LinkedList {
    public static void main(String[] args) {
        PersonNode p1=new PersonNode(1,"a");
        PersonNode p2=new PersonNode(2,"b");
        PersonNode p3=new PersonNode(3,"c");
        PersonNode p4=new PersonNode(4,"d");
        PersonNode p5=new PersonNode(5,"e");
        Singlelinkedlist singlelinkedlist=new Singlelinkedlist();
        singlelinkedlist.add(p1);
        singlelinkedlist.add(p2);
        singlelinkedlist.add(p3);
        singlelinkedlist.add(p4);
        singlelinkedlist.add(p5);
        singlelinkedlist.show();
    }
}
class Singlelinkedlist{
    //初始化一个头结点 这个head节点不能动 只能用辅助变量代替其作用
    private PersonNode head=new PersonNode(0,"头结点");
    //添加链表的方法
    public void add(PersonNode personNode){
        //找到当前链表的最后节点 把这个节点指向新的节点
        PersonNode temp=head;
        while(true){
            if(temp.next==null){
                break;
            }
            //没找到 就一直后移 直到退出循环 指向链表的最后
            temp=temp.next;
        }
        temp.next=personNode;
    }
    public void show(){
        if(head.next==null){
            System.out.println("链表为空");
            return;
        }
        PersonNode node=head.next;
        while(true){
            if(node==null){
                break;
            }
            System.out.println(node);
            node=node.next;        }
    }
}
class PersonNode{
    //定义一个节点类
    int no;
    String name;
    PersonNode next;
    //每一个节点都指向节点属性
    public PersonNode(int no, String name) {
        this.no = no;
        this.name = name;
    }
    @Override
    public String toString() {
        return "PersonNode[" + "no=" + no + ", name='" + name + ']';
    }
}

单向链表 :

        是以节点的形式存储的 每一个节点包含data数据和next指向下一个节点

        链表的各个节点不一定是连续存放的 只是next一个接着一个

        链表分为带头结点和不带头结点的

思路分析和代码实现:

        对于一个单向链表  需要两个类

一个是节点类

        节点类的属性有 next指向下一个节点 name节点名字 no 序号

一个是链表类

        在链表中实现遍历和添加元素以上两个方法 

对于链表的遍历 首先要看是否是空链表 ------>也就是看head节点的next是否存在

若为null 则退出遍历的操作 不为空 设置中间变量 指向head.next 每一次递增直到退出循环为止

对于链表元素的添加 首先要判断是否为最后一个节点 如果已经加到了最后 则无法继续添加

不是最后一个节点的情况下 就把传入的元素赋值给 当前节点的next

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值