Java数据结构链表的概念是什么与怎么实现
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,本文小编为大家详细介绍"Java数据结构链表的概念是什么与怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"Java数据结构链表的概念是什么与怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路
千家信息网最后更新 2025年02月23日Java数据结构链表的概念是什么与怎么实现
本文小编为大家详细介绍"Java数据结构链表的概念是什么与怎么实现",内容详细,步骤清晰,细节处理妥当,希望这篇"Java数据结构链表的概念是什么与怎么实现"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
一、什么是链表
链表的概念
链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的 。
链表的结构
链表结构分为8种:
这里我们只讲最下面两种,因为在工作中、业务里、考试题、刷到的链表题、面试题里面都是用到这两种链表。
链表如何存储数据
链表是由一个一个节点组成的。(这里我们以单链表为例)
什么叫做节点?
节点分为两个域 ,假设一个叫做val域,一个叫做next域。
val:数据域
next:下一个节点的地址
链表的实现
//ListNode代表一个节点 class ListNode{ public int val; public ListNode next; //构造方法 public ListNode(int val){ this.val = val; }}
//MyLinkedList 代表这是一个链表 public class MyLinkedList { public ListNode head;//链表的头引用,所以定义在链表里,head是链表的头,不是节点的头,节点只有两个属性,一个属性是val值,一个属性是next值,所以不能定义在ListNode类里面 ListNode listNode = new ListNode(2);//节点实例化,val域赋值为2}
穷举法创建链表
/MyLinkedList 代表这是一个链表public class MyLinkedList { public ListNode head;//链表的头引用,所以定义在链表里 public void createList(){ ListNode listNode0 = new ListNode(11); ListNode listNode1 = new ListNode(26); ListNode listNode2 = new ListNode(23); ListNode listNode3 = new ListNode(45); ListNode listNode4 = new ListNode(56); listNode0.next = listNode1; listNode1.next = listNode2; listNode2.next = listNode3; listNode3.next = listNode4; this.head = listNode0; }
打印链表
//打印链表 public void display(){ ListNode cur = this.head; while (cur != null){ System.out.print(cur.val+" "); cur = cur.next; } System.out.println(); }
打印结果:
查找是否包含关键字key是否在单链表当中
//查找是否包含关键字key是否在单链表当中 public boolean contains(int key) { ListNode cur = this.head; while (cur != null) { if (cur.val == key) { return true; } cur = cur.next; } return false; }
打印结果:
得到单链表的长度:
//得到单链表的长度 public int size(){ ListNode cur = this.head; int count = 0; while(cur != null){ count++; cur = cur.next; } return count; }
打印结果:
头插法
//头插法 public void addFirst(int data) { ListNode node = new ListNode(data); if (this.head == null) { this.head = node; } else { node.next = this.head; head = node; } }
打印结果:
尾插法
//尾插法 public void addLast(int data){ ListNode node = new ListNode(data); ListNode cur = this.head; if(this.head == null){ this.head = node; }else { while(cur.next != null){ cur = cur.next; } cur.next = node; } }
打印结果:
任意位置插入,第一个数据节点为0号下标
public ListNode findIndex(int index){ ListNode cur = this.head; while(index -1 != 0){ cur = cur.next; index--; } return cur; } //任意位置插入,第一个数据节点为0号下标 public void addIndex(int index,int data){ if(index < 0 || index > size()){ System.out.println("位置不合法"); return; } if(index == 0){ addFirst(data); return; } if(index == size()){ addLast(data); return; } ListNode cur = findIndex(index); ListNode node = new ListNode(data); node.next = cur.next; cur.next = node; }
打印结果:
删除第一次出现关键字为key的节点
//删除第一次出现关键字为key的节点 public void remove(int key){ if(this.head == null){ System.out.println("没有你要删除的节"); return; } if (this.head.val == key){ this.head = this.head.next; return; } ListNode cur = this.head; while (cur.next != null){ if(cur.next.val == key){ cur.next = cur.next.next; return; } cur = cur.next; } if(cur.next == null){ System.out.println("没有该节点"); return; } }
打印结果:
删除所有值为key的节点
//删除所有值为key的节点 public ListNode removeAllKey(int key){ if(this.head == null) return null; ListNode prev = this.head; ListNode cur = this.head; while (cur != null){ if(cur.val == key){ prev.next = cur.next; cur = cur.next; }else{ prev = cur; cur = cur.next; } } if(this.head.val == key){ this.head = this.head.next; } return this.head; }
打印结果:
读到这里,这篇"Java数据结构链表的概念是什么与怎么实现"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
节点
数据
结果
结构
概念
关键
关键字
数据结构
代表
位置
属性
文章
存储
下标
两个
内容
第一次
表里
这是
长度
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
寒假网络安全照片
小牌子的服务器
自助拍照软件开发
开发网络安全等保
魔兽怀旧国际服只有两个服务器
富士康软件开发笔试题深圳
服务器安装网站安全狗
我的世界服务器皮肤怎么没有了
我的世界手游城堡建筑服务器
公安部网络安全长城行动
excel连接万德数据库
伟邺软件开发有限公司
创世理想乡可以建服务器吗
手机麻将软件开发商
如何让网络安全模式有声音
因为和服务器是按照月结算的吗
spec2006数据库
王者荣耀贤者之书服务器找不到
南阳app软件开发哪家好
数据库的属性
软件开发一线城市
软件开发人员的素质
单位网络安全保密管理改进
esxi服务器是什么
网络安全法修改草案
南京编程软件开发服务费
玛洛加尔服务器
网络技术专家是做什么
云计算和网络安全哪个适合女生
中国网络技术学院是什么学校