ppt模板大全免费下载网站什么网站做h5
web/
2025/10/8 4:30:03/
文章来源:
ppt模板大全免费下载网站,什么网站做h5,网站开发报价合同,营销型网站管理方案文章目录链表介绍应用示例链表介绍
链表是有序的列表#xff0c;但是它在内存中是存储是不连续的#xff0c;如下#xff1a; 链表是以节点的方式来存储#xff0c;是链式存储#xff1a; ①每个节点包含data域存储数据#xff0c;next域指向下一个节点 ②链表的各个节点…
文章目录链表介绍应用示例链表介绍
链表是有序的列表但是它在内存中是存储是不连续的如下 链表是以节点的方式来存储是链式存储 ①每个节点包含data域存储数据next域指向下一个节点 ②链表的各个节点不一定是连续存储 ③链表分带头节点的链表和没有头节点的链表根据实际的需求来确定
单链表(带头结点)逻辑结构示意图如下 应用示例
使用带head头的单向链表实现水浒英雄排行榜管理完成对英雄人物的增删改查操作。
①节点类
//定义HeroNode每个HeroNode就是一个链表节点
class HeroNode {//data域public int no; //编号排名public String name; //名字public String nikeName; //昵称//next域public HeroNode next;//构造器public HeroNode(int no, String name, String nikeName) {this.no no;this.name name;this.nikeName nikeName;}//toString方法Overridepublic String toString() {return HeroNode{ no no , name name \ , nikeName nikeName \ };}
}②链表类
//定义SingleLinkedList管理英雄人物相当于是链表
class SingleLinkedList {//先初始化一个头节点不存放具体数据注意头节点保持不动后面不能直接操作它private HeroNode head new HeroNode(0,null,null);//添加链表节点//1、不考虑编号排名找到最后一个节点使得最后一个节点的next指向新的节点public void add1(HeroNode heroNode){//因为头节点不能动因此要一个辅助变量tempHeroNode temp head;//遍历找到最后while (true){if (temp.next null){break;}temp temp.next;}//当退出while就意味着找到最后一个节点了temp.next heroNode;}//2、考虑编号排名根据排名编号从小到大若已存在则添加失败public void add2(HeroNode heroNode){//因为头节点不能动因此要一个辅助变量temp//因为是单链表temp位于添加位置的前一个节点否则插入不了HeroNode temp head;boolean flag false; //用来标记排名编号是否存在默认不存在while (true){if (temp.next null){ //说明temp已经在最后直接添加break;}if (temp.next.no heroNode.no){ //位置找到了temp即在heroNode前break;}if (temp.next.no heroNode.no){ //该排名编号已经存在flag true;break;}temp temp.next; //后移遍历}if (flag){System.out.printf(编号%d已经存在添加失败\n,heroNode.no);}else {//将heroNode添加进链表在temp后一个heroNode.next temp.next;temp.next heroNode;}}//根据编号修改节点中的信息即编号不能改public void update(HeroNode newHeroNode){if (head.next null){System.out.println(链表为空!);return;}HeroNode temp head.next;boolean flag false; //标记是否在链表中找到该编号while (true){if (temp.next null){break;}if (temp.no newHeroNode.no){flag true;break;}temp temp.next;}if (flag){temp.name newHeroNode.name;temp.nikeName newHeroNode.nikeName;}else {System.out.printf(未找到编号为%d的英雄人物,newHeroNode.no);}}//根据编号删除节点public void remove(HeroNode delHeroNode){if (head.next null){System.out.println(链表为空);}HeroNode temp head;boolean flag false; //标记是否找到要删除的节点while (true){if (temp.next null){break;}if (temp.next.no delHeroNode.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;}}
}③测试类
public class SingleLinkedListDemo {public static void main(String[] args) {//英雄人物HeroNode heroNode1 new HeroNode(1, 宋江, 及时雨);HeroNode heroNode2 new HeroNode(2, 卢俊义, 玉麒麟);HeroNode heroNode3 new HeroNode(3, 吴用, 智多星);HeroNode heroNode4 new HeroNode(4, 林冲, 豹子头);//创建一个列表并采用方式一添加节点
// SingleLinkedList singleLinkedList1 new SingleLinkedList();
// singleLinkedList1.add1(heroNode1);
// singleLinkedList1.add1(heroNode2);
// singleLinkedList1.add1(heroNode3);
// singleLinkedList1.add1(heroNode4);//创建一个列表并采用方式二添加节点SingleLinkedList singleLinkedList2 new SingleLinkedList();singleLinkedList2.add2(heroNode4);singleLinkedList2.add2(heroNode1);singleLinkedList2.add2(heroNode3);singleLinkedList2.add2(heroNode2);singleLinkedList2.add2(heroNode3);//修改HeroNode newHeroNode new HeroNode(3, 吴先生, 智much星);singleLinkedList2.update(newHeroNode);//删除singleLinkedList2.remove(heroNode2);//遍历显示链表singleLinkedList2.list();}
}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88872.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!