链表总结
概念:
1.链表是一种物理存储单元上非连续,非顺序的储存结构。它有多个结点组成,一个结点包括存储数据的数据区域和指向下一个结点的指针域。
2.链表一般会有普通链表,循环链表,双向链表的分类。
构建结点:
public class Node {
//要存储的数据
private Object data;
//节点的孩子节点
private Node child;
}
这样即构建好了一个结点,date为任意类型的数据,child即为指向下一个结点的指针,当然,数据类型也可以写多个,可以一个结点储存多个信息。
之后写入获取和设置函数,方便改变和得到结点的内容
建造链表
链表是一个灵活的容器,可以储存任意类型的数据,并且因为数据物理内储存不连续,所以对于删除和插入操作比较容易。
public class LinkTest {
private Node root=null; //根节点
private Node end=null; //尾结点
private int length=0; //长度
}
这样创造一个空链表,对于链表,应该具有基本的添加函数,删除函数,获取函数。
//添加结点
public void add(Node node) {
//如果链表为空
if(null==root){
root = node;
end = node;
}
else {//如果不为空
node.setChild(null);
end.setChild(node);
node.setParent(end);
end = node;
}
this.length++;
}
//获取结点数据
public Object getNodeData(int index){
//设计指针 并指向头结点
Node temp = new Node("指针");
temp = root;
//根据索引找到药修改的位置
for(int i=0;i<index;i++){
temp = temp.getChild();
}
return temp.getData();
}
//移除一个结点
public void remove(int index){
if(index<0||index>length){
return ;
}
Node temp = new Node("指针");
temp =root;
//利用循环找到要删除的节点索引位置
for(int i=0;i<index-1;i++){
temp = temp.getChild();
}
//删除该结点
temp.setChild(temp.getChild().getChild());
//防止尾结点被删除儿导致的 空指针
if(null!=temp.getChild())
temp.getChild().setParent(temp);
//移除后队列长度减一
this.length--;
}
其实除了这些操作外,还可以自己随意定义很多操作,所以链表是一个很灵活的容器,实现自定义队列等等操作。
值得注意的是:在对结点之间经行关系的建立时,一定不要使链表某一部分先断掉,否则那一部分将会消失。如在经行添加操作时,必须先建立“添加结点”与后一个结点的关系,在将前一个结点与“添加结点”建立关系。如果反着来,则会使后面的结点与之前的结点失去联系,从而断掉,public void add(Node node,int i){
//如果链表为空
if(null==root){
root = node;
end = node;
}
else{
//建立指针,为了不使头结点断掉,新建指针代替头结点去寻找位置
Node temp = new Node("指针");
temp = root;
//找到要出入的位置
for(int j=0;j<i;j++){
temp = temp.getChild();
}
node.setChild(temp.getChild());
temp.setChild(node);
}
}
其中node.setChild(temp.getChild());
temp.setChild(node);不能调换位置。
分享到:
相关推荐
JavaScript设计模式_hy5
【Jupyter Notebook】机器学习项目:微额借款用户人品预测
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
该项目为基于Android Studio开发的Bilibili安卓客户端设计源码,包含908个文件,其中包含471个PNG图片文件、220个Java源文件、187个XML布局文件、12个JPG图片文件、3个Gradle构建脚本文件、3个属性文件以及少量其他类型文件。该源码适用于学习Android应用开发,特别是对Bilibili客户端感兴趣的开发者。
DeepSeek 部署详细方式 DeepSeek 是一款功能强大的智能数据搜索和分析平台,其部署过程需要一定的技术背景和准备工作。以下是 DeepSeek 部署的详细步骤,旨在帮助用户顺利完成平台的搭建和配置。 一、准备工作 硬件要求: 服务器:具备足够的计算能力和存储空间,推荐配置高性能 CPU、大容量内存和 SSD 固态硬盘。 网络:确保服务器能够访问互联网,并且网络带宽足够支持数据传输和访问需求。 软件要求: 操作系统:支持 Linux(如 Ubuntu、CentOS 等)或 Windows Server。 数据库:MySQL 或 PostgreSQL 等关系型数据库,用于存储 DeepSeek 的数据和配置信息。 Python 环境:安装 Python 3.x 版本,并配置好相关的 Python 包管理工具(如 pip)。 域名和 SSL 证书: 域名:用于访问 DeepSeek 的 Web 界面。 SSL 证书:确保数据传输的安全性,推荐使用 Let's Encrypt 等免费 SSL 证书。 二、安装步骤 环境配置: 在服务器上安装并配置好操作系统、数据库和 Python
双标图与矩阵乘法演示实例
一种RBAC权限模型基于shiro权限框架的通用权限管理模板,_hy4
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
[RUST]模块化QQ机器人框架(BasedRICQ)_hy4
《机器学习:软件工程方法与实现》Methodandimplementationofmachinelearnin_hy4
【官方】计算机职业英语一级考试样卷.pdf 【官方】全国机等级考试二级笔试样卷:存取(Access)数据库程序设计.pdf 【官方】全国计算机等级考试二级笔试样卷:C++语言程序设计.pdf 【官方】全国计算机等级考试二级笔试样卷:C语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:德尔菲(Delphi)语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:Java语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:视觉基础语言程序设计.pdf 【官方】全国机等级考试二级笔试样卷:视讯FoxPro数据库程序设计.pdf 【官方】全国计算机等级考试三级笔试样卷:PC技术,pdf 【官方】全国计算机等级考试三级笔试样卷:网络技术.pdf 【官方】全国计算机等级考试三级笔试样卷:信息管理技术,pdf 【官方】全国计算机等级考试四级笔试样卷:软件测试工程师.pdf 【官方】全国计算机等级考试四级笔试样卷:数据库工程师,pdf 【官方】全国计算机等级考试四级笔试样卷:数据库技术,pdf 【官方】全国计算机等级考试四级笔试样卷:网络工程师.pdf
《MATLAB 小白修炼手册:从入门到实战》全面介绍 MATLAB。先阐述 MATLAB 在多领域的重要地位,随后深入讲解基础语法,包括变量、数据类型、运算符、控制语句等。详细介绍矩阵与数组这一核心结构的创建、运算和操作,以及常用数学、统计、绘图函数和文件操作。通过数据处理、数学建模、图像处理等案例,展示如何将知识用于实际。最后总结学习内容,鼓励深入探索,还推荐了学习资源与交流渠道,助力读者从新手成长为 MATLAB 实战高手 。
1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。
收录了「IT无知君」CSDN博客中涉及的Java项目源码,还有许多的开发工具类,都是我自己在用在不断维护的,需要请进!_hy4
【Vue+go】使用gin+gorm+jwt+casbin+vue组合实现的RBAC权限管理系统
该项目是针对.net课程的平时作业设计,包含96个文件,包括25个C#源代码文件、22个PNG图片文件、8个JSON数据文件、6个资源文件(.resx)、5个项目文件(.csproj)、5个配置文件(.config)、3个Markdown文档(.md)、3个图片文件(.jpg)、2个未分类文件(.v2和.suo)。这些资源共同构成了一个完整的课程作业集,旨在帮助学生巩固.net编程知识。
【go】用go语言实现消息中间件
【thinkphp】简单实现基于角色的权限控制,使用thinkphp5.0框架敏捷开发,实用的鉴权工具,rbac核心思路_pgj
微信公众号服务器开发脚手架_hy5
该平台是基于Vue框架构建的学科竞赛匹配与组建平台前端设计源码,包含44个文件,涵盖了18个Vue组件、11个TypeScript脚本、5个JSON配置文件、3个CSS样式文件、2个SVG图标、1个Git忽略规则、1个Markdown文档、1个HTML模板和1张JPG图片。项目以Vue、TypeScript、CSS和HTML为主要开发语言,旨在提供高效、易用的学科竞赛匹配与组建解决方案。