数据结构(java版)--链表

链表介绍

链表是有序的列表,但是他在内存中的粗存如下:
在这里插入图片描述小结

  1. 链表是以节点的方式来储存的
  2. 每个节点包含data域,next域:指向下一个节点
  3. 链表的各个节点不一定是连续储存的
  4. 链表分带头节点的链表和没有带头节点的链表,根据实际的需求来确定
    单链表(带头结点)逻辑结构:
    在这里插入图片描述

单链 表的应用实例

  1. 做一个英雄人物的单链表
  2. 可以插入和查询英雄人物
  3. 根据英雄排名插入指定位置
package com.DB;

public class LIanbiao {

    public static class HoreNode{
        public int no;
        public String name;
        public String nikname;
        public HoreNode next;//指向下个节点

        //定义SingleList管理英雄

        //构造器

        public HoreNode(int no,String name,String nikname){
            this.no=no;
            this.name=name;
            this.nikname=nikname;
        }
        //重写toString

        @Override
        public String toString() {
            return "HoreNode{" +
                    "no=" + no +
                    ", name='" + name + '\'' +
                    ", nikname='" + nikname + '\''+
                    '}';
        }

    }
    public static class SingList{
        //初始化头结点
        private HoreNode head=new HoreNode(0,"","");
        //添加节点
        public void add(HoreNode horeNode){
            //创建一个临时节点
            HoreNode temp=head;
            boolean flag=false;//确认英雄是否先存在
            //找到最后节点,加进去
            while (true){
                if (temp.next==null){
                    break;
                }//节点已经是最后的
                if (temp.next.no>horeNode.no){
                    break;
                }else if(temp.next.no==horeNode.no){
                    break;
                }
                temp=temp.next;
            }
            if(flag){
                System.out.println("编号已存在");
            }else {

               horeNode.next=temp.next;
               temp.next=horeNode;
            }

        }
        //修改节点信息
        public void update(HoreNode newhoreNode){
            //判断连表为空
            if (head.next==null){
                System.out.println("连表为空");
                return;
            }
            HoreNode temp=head.next;
            boolean flag=false;
            while (true){
                if (temp.next==null){
                    break;
                }
                if (temp.no==newhoreNode.no){
                    flag=true;
                }
                temp=temp.next;
            }
            if (flag){
                temp.name=newhoreNode.name;
                temp.nikname=newhoreNode.nikname;
            }else {
                System.out.println("没有找到当前节点\n");
            }
        }
        //显示链表
        public void list(){
            if (head.next==null){
                System.out.println("连表为空");
                return;
            }
            HoreNode temp=head.next;
            while(true){
                if (temp==null){
                    break;
                }
                //输出节点信息
                System.out.println(temp);
                temp=temp.next;
            }
        }
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值