数据结构入门之单链表代码实现(java)
1:单链表是:
- 单链表是一种链式存取的 数据结构 用一组地址任意的 存储单元 存放线性表中的数据元素。
- 链表中的数据是以结点来表示的,每个结点的构成:元素 ( 数据元素 的映象) + 指针 (指示后继元素 存储 位置),元素就是存储数据的存储单元,指针就是连接每个结点的 地址 数据。 链表中的数据是以结点来表示的,
- 每个结点的构成:元素 ( 数据元素 的映象) + 指针 (指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 以“结点的序列”表示线性表称作 线性链表 (单链表),单链表是链式存取的结构。 链接方式存储的线性表简称为链表(Linked List)。 ② 链表中结点的逻辑次序和物理次序不一定相同。
2:代码实现:
单链表类属性的定义:
public class HeroNode {
//编号
public int no;
public String Name;
public String noName;
//指向下一个节点
public HeroNode next;
public HeroNode(int no, String name, String noName) {
this.no = no;
Name = name;
this.noName = noName;
}
}
单链表管理类(简单的增删改查):
class LindedHeroNode {
private HeroNode head = new HeroNode(0, "", "");
//顺序添加并不能重复
public void addOrder(HeroNode heroNode) {
HeroNode temp = head;
//标识
boolean flag = false;
while (true) {
if (temp.next == null) {
//已经到最后了
break;
}
if (temp.next.no > heroNode.no) {//找到位置就添加到后面
break;
} else if (temp.next.no == heroNode.no) {//相等则不添加
flag = true;
break;
}
//后移
temp = temp.next;
}
if (flag) {
System.out.println("有相等的编号");
} else {
heroNode.next = temp.next;
temp.next = heroNode;
}
}
//修改
public void update(HeroNode heroNode) {
//先判断链表内部有没有数据
if (head.next == null) {
return;
}
HeroNode temp = head.next;
boolean flag = false;
while (true) {
if (temp.next == null) {
break;
}
//找到退出
if (temp.no == heroNode.no) {
flag = true;
break;
}
//指向下一节点
temp = temp.next;
}
if (flag) {
temp.Name = heroNode.Name;
temp.noName = heroNode.noName;
} else {
System.out.println("没有找到标识");
}
}
//删除
public void delect(int no) {
if (head.next == null) {
System.out.println("没有数据");
return;
}
HeroNode temp = head;
boolean flag = false;
while (true) {
if (temp.next == null) {
break;
}
if (temp.next.no == no) {
flag = true;
break;
}
temp = temp.next;
}
if (flag) {
temp.next = temp.next.next;
} else {
System.out.println("没有找到");
}
}
//遍历
public void list() {
if (head.next == null) {
System.out.println("没有数据");
return;
}
//头结点不能动 需要一个辅助变量来辅助
HeroNode temp = head.next;
while (true) {
if (temp == null) {
break;
}
System.out.println(temp);
temp = temp.next;
}
}
}
3:测试:
//主测试
public class LinkedTest {
public static void main(String[] args) {
HeroNode heroNode = new HeroNode(1, "老大", "喜欢冰淇淋");
HeroNode heroNode1 = new HeroNode(3, "老三", "喜欢棉花糖");
HeroNode heroNode2 = new HeroNode(2, "老二", "喜欢巧克力");
HeroNode heroNode3 = new HeroNode(4, "老四", "喜欢棒棒糖");
LindedHeroNode lindedHeroNode = new LindedHeroNode();
//添加
lindedHeroNode.addOrder(heroNode);
lindedHeroNode.addOrder(heroNode1);
lindedHeroNode.addOrder(heroNode2);
lindedHeroNode.addOrder(heroNode3);
//修改
HeroNode heroNode4 = new HeroNode(2, "小杰", "帅哥");
lindedHeroNode.update(heroNode4);
//删除
lindedHeroNode.delect(6);
//遍历
lindedHeroNode.list();
}
}
数据结构入门之单链表代码实现(java)的更多相关文章
- 理解单链表的反转(java实现)
要求很简单,输入一个链表,反转链表后,输出新链表的表头. 反转链表是有2种方法(递归法,遍历法)实现的,面试官最爱考察的算法无非是斐波那契数列和单链表反转,递归方法实现链表反转比较优雅,但是对于不 ...
- 数据结构(一) 单链表的实现-JAVA
数据结构还是很重要的,就算不是那种很牛逼的,但起码得知道基础的东西,这一系列就算是复习一下以前学过的数据结构和填补自己在这一块的知识的空缺.加油.珍惜校园中自由学习的时光.按照链表.栈.队列.排序.数 ...
- 数据结构之单链表的实现-java
一.单链表基本概念 单链表是一种链式存取的数据结构,用一组地址任意的存储单元(一般是非连续存储单元)存放线性表中的数据元素.链表中的数据是以结点来表示的,每个结点的构成:元素data + 指针next ...
- 数据结构(2):单链表学习使用java实现
单链表是单向链表,它指向一个位置: 单链表常用使用场景:根据序号排序,然后存储起来. 代码Demo: package com.Exercise.DataStructure_Algorithm.Sing ...
- java单链表代码实现
用惯了C++,java写起来果然不太爽...不废话了,上代码... package javaInnerclassDemo; class Link{ class Node{ private String ...
- 数据结构之单链表(基于Java实现)
链表:在计算机中用一组任意的存储单元存储线性表的数据元素称为链式存储结构,这组存储结构可以是连续的,也可以是不连续的,因此在存储数据元素时可以动态分配内存. 注:在java中没有指针的概念,可以理解为 ...
- js数据结构与算法--单链表的实现与应用思考
链表是动态的数据结构,它的每个元素由一个存储元素本身的节点和一个指向下一个元素的引用(也称指针或链接)组成. 现实中,有一些链表的例子. 第一个就是寻宝的游戏.你有一条线索,这条线索是指向寻找下一条线 ...
- PHP数据结构之实现单链表
学习PHP中,学习完语法,开始尝试实现数据结构,今天实现单链表 <?php class node //节点的数据结构 { public $id; public $name; public $ne ...
- 基于python实现单链表代码
1 """ 2 linklist.py 3 单链表的构建与功能操作 4 重点代码 5 """ 6 7 class Node: 8 " ...
- 数据结构-多级指针单链表(C语言)
偶尔看到大一时候写了一个多级链表,听起来好有趣,稍微整理一下. 稍微注意一下两点: 1.指针是一个地址,他自己也是有一个地址.一级指针(带一个*号)表示一级地址,他自身地址为二级地址.二级指针(带两个 ...
随机推荐
- MySQL运维1-日志
一.错误日志 错误日志是MySQL中最重要的日志之一,它记录了当MySQL启动和停止时,以及服务器在运行过程中发生的任何严重错误时的相关信息,当数据库出现任何故障导致无法正常使用时,建议首先查看此日志 ...
- ssr服务器极致渲染
域名 RDS 云服务器 ECS 中国站 文档购物车ICP备案控制台 金秋上云季 首页 技术与产品 社区 直播 开发者学堂 开发者云 工具与资源中心 天池大赛 飞 ...
- OpenJDK17-JVM源码阅读-ZGC-并发标记
1.ZGC简介 1.1 介绍 ZGC 是一款低延迟的垃圾回收器,是 Java 垃圾收集技术的最前沿,理解了 ZGC,那么便可以说理解了 java 最前沿的垃圾收集技术. 从 JDK11 中作为试验特性 ...
- NPOI在EXCEL中插入图片和超链接
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 云图说|初识API中心APIHub
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:API中心是为AP ...
- 轻松合并Excel工作表:Java批量操作优化技巧
摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 在Excel中设计表单时,我们经常需要对收集的信息进行统 ...
- 命令vue inspect > output.js报错:在此系统上禁止运行脚本
用的这个命令去看output.js文件,结果报错. 解决方案是去对应目录下删掉vue.ps1就OK了 .
- QT(8)-QSpinBox
QSpinBox 1 介绍 QSpinBox 是 Qt 中的一种数字输入控件,支持整数和浮点数输入.它允许用户通过上下箭头或键盘输入来选择数字.您可以设置最小值.最大值和步长,以限制用户输入的范围.Q ...
- 「面试题」20+Vue面试题整理
「面试题」20+Vue面试题整理 转载地址:https://juejin.cn/post/6844904084374290446 「观感度:」 「口味:红烧猪蹄」 「烹饪时间:15min」 本文已收录 ...
- 字符串匹配算法:KMP
Knuth–Morris–Pratt(KMP)是由三位数学家克努斯.莫里斯.普拉特同时发现,所有人们用三个人的名字来称呼这种算法,KMP是一种改进的字符串匹配算法,它的核心是利用匹配失败后的信息,尽量 ...