链表是有序的列表,但是它在内存中是存储如下:
小结上图:
1) 链表是以节点的方式来存储,是链式存储
2) 每个节点包含 data 域, next 域:指向下一个节点.
3) 如图:发现链表的各个节点不一定是连续存储.
4) 链表分带头节点的链表没有头节点的链表,根据实际的需求来确定

带头结点的单链表逻辑结构图如下:

单链表的应用实例
使用带 head 头的单向链表实现 –水浒英雄排行榜管理完成对英雄人物的增删改查操作;
1) 第一种方法在添加英雄时,直接添加到链表的尾部

定义一个HeroNode,每个HeroNode对象就是一个结点
class HeroNode{public int no;public String name;public String nickname;public HeroNode next;//指向下一个结点//构造器public HeroNode(int hNo,String hName,String hNickname){this.no=hNo;this.name=hName;this.nickname=hNickname;}//为了显示方便,重写toString方法@Overridepublic String toString() {return "HeroNode [no="+no+",name="+name+",nickname="+nickname;}
}

定义一个单向链表

//定义一个SingleLinkedList管理英雄
class SingleLinkedList{//先初始化一个头结点,头结点不动,不存放具体数据private HeroNode head=new HeroNode(0,"","");//头结点序号为0,无名称和昵称}

在单向链表类中定义添加结点的方法

class SingleLinkedList{//先初始化一个头结点,头结点不动,不存放具体数据private HeroNode head=new HeroNode(0,"","");//头结点序号为0,无名称和昵称//添加结点到单向链表//当不考虑编号顺序时,将当前链表的最后结点的next域指向新结点public void add(HeroNode heroNode){//因为head结点不能动,需要一个辅助变量tempHeroNode temp=head;// 遍历链表,找到最后链表while (true){//找到链表最后if (temp.next==null){break;}//如果没有找到最后,temp后移temp=temp.next;}//当退出循环时,temp指向链表最后//将最后结点指向新结点temp.next=heroNode;}
}

在单链表类内定义显示结点的方法

class SingleLinkedList{//先初始化一个头结点,头结点不动,不存放具体数据private HeroNode head=new HeroNode(0,"","");//头结点序号为0,无名称和昵称//添加结点到单向链表//当不考虑编号顺序时,将当前链表的最后结点的next域指向新结点public void add(HeroNode heroNode){//因为head结点不能动,需要一个辅助变量tempHeroNode temp=head;// 遍历链表,找到最后链表while (true){//找到链表最后if (temp.next==null){break;}//如果没有找到最后,temp后移temp=temp.next;}//当退出循环时,temp指向链表最后//将最后结点指向新结点temp.next=heroNode;}//显示链表 遍历public void ShowList(){//判断是否为空if (head.next==null){System.out.println("链表为空");return;}//因为头结点不动,需要辅助变量遍历HeroNode temp=head.next;while (true){//判断是否到链表最后if (temp==null){break;}System.out.println(temp);//将temp后移temp=temp.next;}}
}

测试

public class SingleLinkedListDemo {public static void main(String[] args){//进行测试//先创建结点HeroNode hero1=new HeroNode(1,"宋江","及时雨");HeroNode hero2=new HeroNode(2,"卢俊义","玉麒麟");HeroNode hero3=new HeroNode(3,"吴用","智多星");HeroNode hero4=new HeroNode(4,"林冲","豹子头");//创建一个链表SingleLinkedList singleLinkList=new SingleLinkedList();singleLinkList.add(hero1);singleLinkList.add(hero2);singleLinkList.add(hero3);singleLinkList.add(hero4);//显示一把singleLinkList.ShowList();}}

测试结果:perfect!!!!!

完整代码贴一下:

package com.zhenghuan.LinkedList;public class SingleLinkedListDemo {public static void main(String[] args){//进行测试//先创建结点HeroNode hero1=new HeroNode(1,"宋江","及时雨");HeroNode hero2=new HeroNode(2,"卢俊义","玉麒麟");HeroNode hero3=new HeroNode(3,"吴用","智多星");HeroNode hero4=new HeroNode(4,"林冲","豹子头");//创建一个链表SingleLinkedList singleLinkList=new SingleLinkedList();singleLinkList.add(hero1);singleLinkList.add(hero2);singleLinkList.add(hero3);singleLinkList.add(hero4);//显示一把singleLinkList.ShowList();}}//定义一个SingleLinkedList管理英雄
class SingleLinkedList{//先初始化一个头结点,头结点不动,不存放具体数据private HeroNode head=new HeroNode(0,"","");//头结点序号为0,无名称和昵称//添加结点到单向链表//当不考虑编号顺序时,将当前链表的最后结点的next域指向新结点public void add(HeroNode heroNode){//因为head结点不能动,需要一个辅助变量tempHeroNode temp=head;// 遍历链表,找到最后链表while (true){//找到链表最后if (temp.next==null){break;}//如果没有找到最后,temp后移temp=temp.next;}//当退出循环时,temp指向链表最后//将最后结点指向新结点temp.next=heroNode;}//显示链表 遍历public void ShowList(){//判断是否为空if (head.next==null){System.out.println("链表为空");return;}//因为头结点不动,需要辅助变量遍历HeroNode temp=head.next;while (true){//判断是否到链表最后if (temp==null){break;}System.out.println(temp);//将temp后移temp=temp.next;}}
}//定义一个HeroNode,每个HeroNode对象就是一个结点
class HeroNode{public int no;public String name;public String nickname;public HeroNode next;//指向下一个结点//构造器public HeroNode(int hNo,String hName,String hNickname){this.no=hNo;this.name=hName;this.nickname=hNickname;}//为了显示方便,重写toString方法@Overridepublic String toString() {return "HeroNode [no="+no+",name="+name+",nickname="+nickname;}
}

数据结构之链表(Linklist)---Java实现相关推荐

  1. 数据结构:链表(Linklist)的定义和它的函数们

    数据结构:链表(Linklist)的定义和它的函数们 链表的定义: 对整体的定义(相当于一个大括号,保存一头一尾的指针) #define MAXSIZE 100 typedef char ElemTy ...

  2. 数据结构之链表及其Java实现_数据结构之链表及其Java实现

    数据的存储一般分线性存储结构和链式存储结构两种.前者是一种顺序的存储方式,在内存中用一块连续的内存空间存储数据,即逻辑上相连的物理位置相邻,比较常见的就是数组:后者是一种链式存储方式,不保证顺序性,逻 ...

  3. 数据结构知识点 -- 链表(Java实现)

    持续更新 文章目录 简单题 1. 反转链表 2. 合并有序数列 3. 判断链表中是否有环 4. 链表排序 5. 判断一个链表是否为回文结构 6. 两个链表的第一个公共点 7. 删除有序链表中重复的元素 ...

  4. c语言数据结构linklist用法,C语言数据结构-线性链表LinkList

    1. 头结点表示链表中第一个结点的存储位置 2. 最后一个结点的存储位置为空(NULL); #ifndef __LINKLLIST_H__ #define __LINKLLIST_H__ #defin ...

  5. 数据结构之链表(JAVA)

    文章目录 一,链表的介绍 什么是链表 链表和数组的比较 二,单链表的实现 添加节点 修改节点 删除节点 查找节点 遍历链表 三,双向链表的实现 双向链表的介绍 双向链表的分析 遍历链表 添加节点 修改 ...

  6. JAVA实现单链表数据结构_java实现数据结构单链表示例(java单链表)

    /** * 单向链表 * */ public class nodelist { private static class node { // 节点类 e data; // 节点上的数据 node ne ...

  7. Java实现自定义队列和树结构_Java数据结构之链表、栈、队列、树的实现方法示例...

    本文实例讲述了java数据结构之链表.栈.队列.树的实现方法.分享给大家供大家参考,具体如下: 最近无意中翻到一本书,闲来无事写几行代码,实现几种常用的数据结构,以备后查. 一.线性表(链表) 1.节 ...

  8. java链表的数据结构_Java数据结构 获取链表(LinkedList)的第一个和最后一个元素

    Java数据结构 获取链表(LinkedList)的第一个和最后一个元素 以下实例演示了如何使用 LinkedList 类的 linkedlistname.getFirst() 和 linkedlis ...

  9. java环形链表_数据结构和算法(四)Java实现环形链表

    1. 数据结构和算法(四)Java实现环形链表 1.1 约瑟夫问题 约瑟夫问题:公元66年,约瑟夫不情愿地参与领导了犹太同胞反抗罗马统治的起义,后来起义失败,他和一些宁死不降的起义者被困于一个山洞之中 ...

  10. 数据结构之链表(java语言实现)

    链表的底层储存结构: 相对于数组这一需要连续.足够大空间的数据结构,链表只需要利用"指针"将一组零碎的空间(在链表中称之为节点)串联起来,这样就可以避免在创建数组时一次性申请过大的 ...

最新文章

  1. mysql查询前10条记录
  2. 解题报告 『生活大爆炸版石头剪刀布(模拟)』
  3. 03-cmake语法-变量,字符串
  4. weblogic如何在linux扩容,如何在linux的weblogic上增加启动参数
  5. AutoLayout代码布局使用大全—一种全新的布局思想
  6. Centos7 安装配置 tomcat 并设置自动启动
  7. 团队计划(4.27)
  8. Qt5学习笔记之QQ登录界面四:界面布局
  9. Ubuntu配置网络
  10. 贪心 穷举 动态规划 区别
  11. Delphi10.4.1开发Linux应用视频重播
  12. 关于微信小程序图标icon的五种实现方案
  13. 使注册用户名时不能包含特殊符号
  14. overleaf 插入图片_Overleaf手册(三)--图片
  15. 【突变检验方法二】MATLAB实现贝叶斯突变检测
  16. 我的世界四大微软签约服务器,一年吸纳1.5亿用户,《我的世界》宣布开启“阴阳师”等四大IP联动 - 全文...
  17. React组件通信-非父子组件间的通信
  18. 拒绝尬吹!海盗船键盘K100告诉你什么才是机械键盘天花板!
  19. Linux基础命令-大全
  20. Python 和 Java 处理废弃API的方法

热门文章

  1. vue多附件预览(.pdf\.docx\.xlsx\.txt)
  2. java.lang.IllegalArgumentException: Invalid character found in the request target. The valid charact
  3. SVN解决冲突Resolving Conflicts
  4. 解决Hash冲突的方法
  5. PCIe初始化枚举和资源分配流程分析
  6. 打造商业模式中的闭环                                                     ----闭环意味着循环
  7. 中国求职招聘人才类网站排行榜
  8. C语言超市管理系统(c语言)
  9. SSL/TLS学习-ECDHE
  10. 爱奇艺html5无效,爱奇艺无法投屏怎么办?爱奇艺投屏失败的多种解决方法