packagelinkedlist;//单链表的创建、添加插入、修改、删除

public classSingleLinkedListDemo {public static voidmain(String[] args) {//测试

HeroNode hero1 = new HeroNode(1,"宋江","及时雨");

HeroNode hero2= new HeroNode(2,"无哟","时雨");

HeroNode hero3= new HeroNode(3,"后盖","及雨");

SingleLinkedList list1= newSingleLinkedList();//list1.add(hero1);//list1.add(hero2);//list1.add(hero3);

list1.addByOrder(hero3);

list1.addByOrder(hero2);

list1.addByOrder(hero1);//list1.delete(3);//测试删除操作

list1.list();// //测试修改节点方法//System.out.println("修改后:");//HeroNode newHeroNode = new HeroNode(4, "修改", "十大发生");//list1.update(newHeroNode);//list1.list();//统计节点个数测试

int a =getLength(list1.getHead());

System.out.println();

}classSingleLinkedList{private HeroNode head = new HeroNode(0,"","");//获取头结点

publicHeroNode getHead() {returnhead;

}//第一种添加方式,不需要按no大小排序

public voidadd(HeroNode heroNode){

HeroNode temp=head;while(true){if(temp.next==null){break;

}//如果没有找到,则到下一个

temp=temp.next;

}

temp.next=heroNode;

}//第二种添加方式,根据排名插入指定位置。(如果有这个排名,则添加失败,给出提示)

public voidaddByOrder(HeroNode heroNode){

HeroNode temp=head;boolean flag = false; //排名编号是否存在

while(true){if(temp.next == null){break;

}//位置找到,在temp后面插入(temp.next的编号比新插入的编号要大)

if(temp.next.no >heroNode.no){break; //找到了,直接退出循环

}else if(temp.next.no ==heroNode.no){

flag=true;break;

}

temp=temp.next;

}//这里想加等号,必须加两个==

if(flag==true){

System.out.println("编号"+heroNode.no+":"+heroNode.name+" 存在,添加失败");

}else{

heroNode.next=temp.next;

temp.next= heroNode; //????????

}

}//修改节点信息,根据编号修改,即no编号不变

public voidupdate(HeroNode newHeroNode){//判断是否为空

if(head.next==null){

System.out.println("链表为空");return;

}//temp可以2种表示方法,为了简化代码//HeroNode temp = head.next;

HeroNode temp =head;boolean flag = false;while(true){if(temp.next==null){break;

}//if(temp == null){//break;//}//if(temp.no==newHeroNode.no){//flag=true;//找到了//break;//}

if(temp.next.no==newHeroNode.no){

flag=true; //找到了

break;

}

temp=temp.next;

}if(flag){//temp.name = newHeroNode.name;

temp.next.name =newHeroNode.name;//temp.nickname = newHeroNode.nickname;

temp.next.nickname =newHeroNode.nickname;

}else{

System.out.println("编号不存在");

}

}//删除节点//head不能动,temp表示要删除节点的前一个节点

public void delete(intno){

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 voidlist(){//判断是否为空

if(head.next==null){

System.out.println("链表为空");return;

}//头结点不能动,创建辅助变量

HeroNode temp =head.next;while(true){//判断是否到尾部

if(temp==null){break;

}//如果没有,就输出(toString)

System.out.println(temp);//temp一定后移,否则死循环

temp =temp.next;

}

}

}classHeroNode{public intno;publicString name;publicString nickname;publicHeroNode next;//构造器

public HeroNode(intno, String name, String nickname) {super();this.no =no;this.name =name;this.nickname =nickname;

}//重写toString

@OverridepublicString toString() {return "HeroNode [no=" + no + ", name=" + name + ", nickname=" + nickname + "]";

}

}

java增加 删除 修改表格_Java实现单链表的创建、添加、修改、删除相关推荐

  1. java单链表存储结构_Java数据结构——单链表

    单链式存储线性列表 线性表的链式存储结构的特点是用一组任意的存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的 (图片来自网络,侵删) 存储单元由两部分组成,数据源和指针,数据源 ...

  2. 单链表的创建,插入,删除以及查找

    本文章依据学校的实验作业完成 目录 前言 一.链表是什么? 1.概念 2.链表的分类 二.单链表的创建,插入,删除以及查找 1.单链表的存储结构 2.单链表的创建 3.单链表的插入 4.单链表的删除 ...

  3. java单链表输出_数据结构基础------1.线性表之单链表的创建与输出方法(Java版)...

    基础知识: 线性表(linear list),是其组成元素间具有线性关系的一种线性结构. 线性表有 ①顺序存储结构(sequential storage structure) 顺序存储结构可以简单的理 ...

  4. SDUT_2122 数据结构实验之链表七:单链表中重复元素的删除

    提交代码 数据结构实验之链表七:单链表中重复元素的删除 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Proble ...

  5. 数据结构实验之链表七:单链表中重复元素的删除

    Description 按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个). Input 第一行输入元素个数 n (1 <= n &l ...

  6. 单链表的创建、插入、删除、倒置操作

    /*-----------------------------------------------------*/ /*--------------单链表的创建.插入.删除.倒置操作--------- ...

  7. 单链表的创建、删除、反转、插入、排序操作

    单链表的创建.删除.反转.插入.排序操作 文章目录 单链表的创建.删除.反转.插入.排序操作 1.1 链表引言 1.2 单链表节点的数据结构 1.3 创建链表 1.4 打印整个链表 1.5 链表插入数 ...

  8. 7-6 数据结构实验之链表七:单链表中重复元素的删除 (20 分)

    按照数据输入的相反顺序(逆位序)建立一个单链表,并将单链表中重复的元素删除(值相同的元素只保留最后输入的一个). 输入格式: 第一行输入元素个数 n (1 <= n <= 15): 第二行 ...

  9. 线性表的基本操作及应用(单链表的创建、插入、删除、查找、显示)

    1.实现单链表的创建:2.实现单链表的插入:3.实现单链表的删除:4.实现单链表的查找:5.实现单链表的显示 #include <stdio.h> #include <stdlib. ...

最新文章

  1. 百度开源,分布式配置中心
  2. 离开网易的转型之路3:热爱测试之路-路上的风景
  3. 【学习笔记】ABAP OOD设计模式 - 单例模式
  4. 网络安全-windows批处理
  5. lr_eval_string()使用
  6. volatile、const的用法
  7. Web前端技术趋势:HTML5仍不宜用作生产
  8. 可靠信道传输2.0 2.1 3.0
  9. CCF201612-1 中间数(100分)【序列处理+排序】
  10. IDEA常用快捷键总结
  11. java Ofd 转图片_OFD文件怎么转换成图片
  12. PHP常用函数归类总结【大全】
  13. JavaEE高级框架学习笔记(八)Struts高级ActionForm
  14. 黎曼猜想 量子计算机,理解黎曼猜想(一)背景
  15. Machine Learning-L13-频繁模式挖掘
  16. 【待更新】【Rockchip】瑞芯微/rockchip 开发环境搭建|编译|烧录 开发实例
  17. visio粘贴excel图表
  18. 深入理解Java虚拟机-垃圾收集算法
  19. SpringBoot单元测试RunWith注解无法解析
  20. 小白学习cartopy画地图的第六天

热门文章

  1. 一图看懂BCH和BTC的区块费用差距到底有多大?
  2. HBase 与 MapReduce 集成
  3. EOS净流入超3亿,比特币继续震荡盘整
  4. UI_UITableView_搭建
  5. Android移动开发者必须知道的Deep Linking技术
  6. VirtualBox 安装Centos 之访问虚拟机里面的服务受阻解决方案
  7. 【.NET】正则表达式笔记
  8. 云路由 vyatta 体验(二)NAT
  9. 在AWS Lambda上运行脚本语言:PHP、Ruby和Go(外文翻译)
  10. A股融资融券余额是什么意思?