数据结构之链表(Linklist)---Java实现
![](/assets/blank.gif)
带头结点的单链表逻辑结构图如下:
定义一个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实现相关推荐
- 数据结构:链表(Linklist)的定义和它的函数们
数据结构:链表(Linklist)的定义和它的函数们 链表的定义: 对整体的定义(相当于一个大括号,保存一头一尾的指针) #define MAXSIZE 100 typedef char ElemTy ...
- 数据结构之链表及其Java实现_数据结构之链表及其Java实现
数据的存储一般分线性存储结构和链式存储结构两种.前者是一种顺序的存储方式,在内存中用一块连续的内存空间存储数据,即逻辑上相连的物理位置相邻,比较常见的就是数组:后者是一种链式存储方式,不保证顺序性,逻 ...
- 数据结构知识点 -- 链表(Java实现)
持续更新 文章目录 简单题 1. 反转链表 2. 合并有序数列 3. 判断链表中是否有环 4. 链表排序 5. 判断一个链表是否为回文结构 6. 两个链表的第一个公共点 7. 删除有序链表中重复的元素 ...
- c语言数据结构linklist用法,C语言数据结构-线性链表LinkList
1. 头结点表示链表中第一个结点的存储位置 2. 最后一个结点的存储位置为空(NULL); #ifndef __LINKLLIST_H__ #define __LINKLLIST_H__ #defin ...
- 数据结构之链表(JAVA)
文章目录 一,链表的介绍 什么是链表 链表和数组的比较 二,单链表的实现 添加节点 修改节点 删除节点 查找节点 遍历链表 三,双向链表的实现 双向链表的介绍 双向链表的分析 遍历链表 添加节点 修改 ...
- JAVA实现单链表数据结构_java实现数据结构单链表示例(java单链表)
/** * 单向链表 * */ public class nodelist { private static class node { // 节点类 e data; // 节点上的数据 node ne ...
- Java实现自定义队列和树结构_Java数据结构之链表、栈、队列、树的实现方法示例...
本文实例讲述了java数据结构之链表.栈.队列.树的实现方法.分享给大家供大家参考,具体如下: 最近无意中翻到一本书,闲来无事写几行代码,实现几种常用的数据结构,以备后查. 一.线性表(链表) 1.节 ...
- java链表的数据结构_Java数据结构 获取链表(LinkedList)的第一个和最后一个元素
Java数据结构 获取链表(LinkedList)的第一个和最后一个元素 以下实例演示了如何使用 LinkedList 类的 linkedlistname.getFirst() 和 linkedlis ...
- java环形链表_数据结构和算法(四)Java实现环形链表
1. 数据结构和算法(四)Java实现环形链表 1.1 约瑟夫问题 约瑟夫问题:公元66年,约瑟夫不情愿地参与领导了犹太同胞反抗罗马统治的起义,后来起义失败,他和一些宁死不降的起义者被困于一个山洞之中 ...
- 数据结构之链表(java语言实现)
链表的底层储存结构: 相对于数组这一需要连续.足够大空间的数据结构,链表只需要利用"指针"将一组零碎的空间(在链表中称之为节点)串联起来,这样就可以避免在创建数组时一次性申请过大的 ...
最新文章
- mysql查询前10条记录
- 解题报告 『生活大爆炸版石头剪刀布(模拟)』
- 03-cmake语法-变量,字符串
- weblogic如何在linux扩容,如何在linux的weblogic上增加启动参数
- AutoLayout代码布局使用大全—一种全新的布局思想
- Centos7 安装配置 tomcat 并设置自动启动
- 团队计划(4.27)
- Qt5学习笔记之QQ登录界面四:界面布局
- Ubuntu配置网络
- 贪心 穷举 动态规划 区别
- Delphi10.4.1开发Linux应用视频重播
- 关于微信小程序图标icon的五种实现方案
- 使注册用户名时不能包含特殊符号
- overleaf 插入图片_Overleaf手册(三)--图片
- 【突变检验方法二】MATLAB实现贝叶斯突变检测
- 我的世界四大微软签约服务器,一年吸纳1.5亿用户,《我的世界》宣布开启“阴阳师”等四大IP联动 - 全文...
- React组件通信-非父子组件间的通信
- 拒绝尬吹!海盗船键盘K100告诉你什么才是机械键盘天花板!
- Linux基础命令-大全
- Python 和 Java 处理废弃API的方法
热门文章
- vue多附件预览(.pdf\.docx\.xlsx\.txt)
- java.lang.IllegalArgumentException: Invalid character found in the request target. The valid charact
- SVN解决冲突Resolving Conflicts
- 解决Hash冲突的方法
- PCIe初始化枚举和资源分配流程分析
- 打造商业模式中的闭环 ----闭环意味着循环
- 中国求职招聘人才类网站排行榜
- C语言超市管理系统(c语言)
- SSL/TLS学习-ECDHE
- 爱奇艺html5无效,爱奇艺无法投屏怎么办?爱奇艺投屏失败的多种解决方法