如何分析linkedList
发表于:2024-11-28 作者:千家信息网编辑
千家信息网最后更新 2024年11月28日,如何分析linkedList,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。简介linkedList应该是一种非常非常简单
千家信息网最后更新 2024年11月28日如何分析linkedList
如何分析linkedList,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
简介
linkedList应该是一种非常非常简单的数据结构了。节点一个一个的连接起来,就成了linkedList。今天我们使用动画的方法一起来看看linkedList是怎么插入和删除的。
linkedList的构建
linkedList是由一个一个的节点构成的。而每个节点只需要存储要保存的数据和下一个节点的引用即可。
linkedList本身需要一个head节点,所以我们的linkedList可以这样构建:
public class LinkedList { Node head; // head 节点//Node表示的是Linked list中的节点,包含一个data数据和下一个节点的引用class Node {int data; Node next;//Node的构造函数Node(int d) { data = d; } }}
linkedList的操作
先看一下linkedList怎么插入数据,插入数据有三种方式,头部插入,尾部插入,中间插入。
头部插入
先看一个头部插入的例子:
头部插入的逻辑是什么呢?
新插入的节点作为head节点,然后将原来的head节点指向当前head节点的next引用即可。
//插入到linkedList的头部public void push(int newData) {//构建要插入的节点Node newNode = new Node(newData);//新节点的next指向现在的head节点newNode.next = head;//现有的head节点指向新的节点head = newNode; }
尾部插入
再看一下尾部插入的例子:
插入的逻辑是什么呢?
找到最后一个节点,然后将最后一个节点的next指向新插入的节点。
//新节点插入到list最后面public void append(int newData) {//创建新节点Node newNode = new Node(newData);//如果list是空,则新节点作为head节点if (head == null) { head = newNode;return; } newNode.next = null;//找到最后一个节点Node last = head;while (last.next != null) { last = last.next; }//插入last.next = newNode;return; }
中间插入
再看一下中间插入的例子:
这个例子中,我们在第三个节点的位置插入了一个93。
插入逻辑就是先找到第二个节点,将第二个节点的next指向新节点,然后将新节点的next指向原先的第三个节点。
看下java代码如何实现:
//插入在第几个元素之后public void insertAfter(int index, int newData) { Node prevNode = head;for (int i = 1; i < index; i++) {if (prevNode == null) { System.out.println("输入的index有误,请重新输入");return; } prevNode = prevNode.next; }//创建新的节点Node newNode = new Node(newData);//新节点的next指向prevNode的下一个节点newNode.next = prevNode.next;//将新节点插入在prevNode之后prevNode.next = newNode; }
删除节点
再看一下怎么删除某个位置的节点:
上面的例子中,我们要删除第5个节点。
删除的逻辑就是找到第4个节点和第6个节点。然后将第四个节点的next指向第6个节点即可。
看下相应的java代码如下:
//删除特定位置的节点void deleteNode(int index){// 如果是空的,直接返回if (head == null)return;// head节点Node temp = head;// 如果是删除head节点if (index == 1) { head = temp.next;return; }// 找到要删除节点的前一个节点for (int i=1; temp!=null && inext 是要删除的节点,删除节点Node next = temp.next.next; temp.next = next; }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
节点
指向
例子
头部
数据
逻辑
位置
尾部
三个
代码
就是
帮助
输入
分析
清楚
元素
内容
函数
动画
对此
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发中使用的技术标准
网络技术的基本应用的实验报告
软件开发中各阶段
航天税盘 什么数据库
怀旧服服务器内存太大
网络安全可以培训什么
阿里云网络技术架构
软件开发劳务分包
宝山区品牌软件开发创新服务
国产串口终端服务器价格
软件开发合同催告函
安卓手机软件开发工资
网络技术业绩总结
一流的软件开发
模拟腹腔镜软件开发
互联网是抗疫黑科技吗
湖北外网ftp服务器租用
软件开发哪个国家最厉害
手机软件开发学什么专业好
csgo什么是社区服务器
软件开发质量保障措施及计划
江苏常州服务器整体机柜云空间
数据库接口轻易就崩了
兴化巨型网络技术厂家价格
9341打印服务器固件
坂田软件开发公司电话
云计算服务器虚拟化能力配置
内蒙古豫银通网络技术有限
社团管理系统数据库环境说明
Redseq数据库