链表结构是由一个或一个以上再内存上不连续存储的元素结点连接而成的数据结构,链表的每个结点都有两个部分,一个部分是存储的数据,另一部分是指向下一结点的指针,既是下一节点的引用。

首先链表一定有一个头结点,它是链表的第一个结点,他是链表的第一个结点,该结点的引用部分指向下一节点,下一结点引用部分指向下下一结点 。。。。直到最后一个结点,最后一个结点引用部分为空,标志着链表的结束,整个存储形式呈一个长链状

链表的基础操作分为 追加结点 遍历结点 删除结点 插入结点等

首先是链表结点类

public class LinearList {

//链表数据部分

int i;

//链表指针,既是链表对下一节点的引用

LinearList nextNode;

}

追加结点

/**

* 链表末尾追加节点

* @param head (头节点)

* @param i (追加节点的值)

* @return

*/

static int add(LinearList head,int i){

//判断头节点有没有初始化

if(head == null){

return 0;

}

//保存头节点引用

LinearList temp = head;

//实例化追加节点,保存最佳节点数据

LinearList addNode = new LinearList();

addNode.i = i;

addNode.nextNode = null;

/**

* 循环至链表最后一个节点

*/

while(temp.nextNode!=null){

temp = temp.nextNode;

}

//链表最后一个节点的指针指向追加的节点

temp.nextNode = addNode;

return 1;

}

遍历结点

/**

* 遍历链表的所有结点

* @param head

*/

static void printNode(LinearList head){

if (head == null){

return;

}

while(head != null){

System.out.println("正在遍历:"+head.i);

//该结点操作完成,指针下移到下一节点

head = head.nextNode;

}

}

删除结点

/**

* 删除指定节点

* 首先循环移动指针查找到要删除的结点

* 再通过指针互换使要删除节点移出链表

* 返回值为头节点

* 删除头节点则返回新的头节点

*

*

* @param head

* @param delKey

* @return head

*/

static LinearList delete(LinearList head,int delKey){

LinearList node = null;

LinearList temp = null;

/**

* 如果要删除的是头节点

* 则返回删除后新的头节点

*

*/

if(head.i == delKey){

temp = head.nextNode;

head.nextNode = null;

return temp;

}

temp = head.nextNode;

while (temp != null){

if(temp.nextNode.i == delKey){

node = temp.nextNode.nextNode;

temp.nextNode = node;

return head;

}else{

temp = temp.nextNode;

}

}

return null;

}

插入结点

/**

* 在链表指定位置插入节点

* insertKey 插入节点的数据

* upperNodeKey 引用插入节点的元素的数据

*

* 通过find 方法返回链表中的插入位置的上一节点

* 改变插入节点的指针指向插入节点

* 插入节点的指针指向插入位置的下一节点

*

* @param head

* @param inserKey

* @param upperNodeKey

* @return

*/

static int insert(LinearList head,int inserKey,int upperNodeKey ){

//判断头节点有没有初始化

if(head == null){

return 0;

}

//保存查找节点的结果

LinearList temp = find(head,upperNodeKey);

//保存temp 对下一节点的引用

LinearList temp1 = null;

//即将插入的新节点

LinearList insertNode = new LinearList();

insertNode.i = inserKey;

if (temp == null){

return 0;

}else{

//指针互换

temp1 = temp.nextNode;

temp.nextNode = insertNode;

insertNode.nextNode = temp1;

return 1;

}

}

java链表需要自己编写么_基于java的链表基础操作相关推荐

  1. java动漫网站开题报告_基于java的校园论坛网站的开发与设计开题报告.doc

    基于java的校园论坛网站的开发与设计开题报告 太 原 科 技 大 学 华 科 学 院 毕业设计开题报告 学 生 姓 名:学 号:学 院.系:专 业:论 文 题 目:指导教师: 2015 年 3 月1 ...

  2. 用java写的教职工信息管理系统_基于Java的教师信息管理系统的设计与实现论文.doc...

    基于Java的教师信息管理系统的设计与实现论文 职场大变样社区():下载毕业设计成品 全套资料,全部50元以下 毕业设计(论文)任务书 第1页 毕业设计(论文)题目: 基于java的教师信息管理系统的 ...

  3. Java简单记事本设计实验报告_基于JAVA的记事本设计报告.doc

    基于JAVA的记事本设计报告 华北科技学院计算机系综合性实验报告 PAGE 第 PAGE 11 页 XX学校计算机系综合性实验 实 验 报 告 课程名称 Java程序设计 实验学期 至 学年 第 学期 ...

  4. java拼图游戏设计文档_基于JAVA的拼图游戏的设计与实现(含录像)

    基于JAVA的拼图游戏的设计与实现(含录像)(任务书,开题报告,中期检查表,外文翻译,毕业论文15500字,程序代码,答辩PPT,答辩视频录像) 摘  要 在我们日常生活中,有很多的益智类游戏,如七巧 ...

  5. 基于java的网上花店销售系统_基于JAVA的鲜花销售系统(含全套CAD图纸).doc

    基于JAVA的鲜花销售系统(含全套CAD图纸) 编号 太湖学院 毕业设计(论文) 题目: 信机 系 专业 学 号: 学生姓名: 指导教师: 201年5月2日太湖学院本科毕业设计(论文) 诚 信 承 诺 ...

  6. java动态数组的实现的_基于Java的动态数组分析与实现

    动态数组 概念 基于Java提供的静态数组封装自己的动态数组,动态数组涉及的组成部分如下图所示. 组成部分解读data:静态数组,通过泛型支持多种类型的元素:private E[] data;. si ...

  7. java 金数据推送数据_基于JAVA的黄金数据接口调用代码实例

    代码描述:基于JAVA的黄金数据接口调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/29 1.[代码][Java]代码 import java.io.Buffer ...

  8. 基于java的oa协同办公系统_基于JAVA的OA系统的制作毕业设计论文

    <基于JAVA的OA系统的制作毕业设计论文.doc>由会员分享,可免费在线阅读全文,更多与<基于JAVA的OA系统的制作毕业设计论文>相关文档资源请在帮帮文库(www.woc8 ...

  9. java写的股票技术分析_基于Java语言开发的个性化股票分析技术:量能突破模型(Energe-Break)...

    基于Java语言开发的个性化股票分析技术: 量能突破模型(Energe-Break) 一个用量能指标作为判定依据的条件分析模型,根据最近5天内是否有量能平台的突破以及涨跌幅的大小给每只股票评分评价,给 ...

最新文章

  1. Qt paintevent事件
  2. Oracle数据库之基本查询
  3. It is indirectly referenced from required .class file
  4. java每秒执行一次_Java性能权威指南
  5. ie9无法获取未定义或 null 引用的属性“indexof”_前端JS基础篇(二)JS基本数据类型和引用数据类型及检测数据类型方法...
  6. 暑假集训单切赛第一场 CF 191A Dynasty Puzzles
  7. Java内存模型深度解析:重排序
  8. Unity学习笔记(一)—— 基础知识
  9. Filter过滤器的作用
  10. label_studio自动预标注功能
  11. Bootstrap 超大屏幕(Jumbotron)
  12. 单词游戏: hangman
  13. h5跳转到小程序总是出现页面不存在-微信小程序开发
  14. 关于解决win7远程桌面已停止工作错误
  15. NativeCat Premium免安装破解版:百度云传送门
  16. linux安装防恶意代码的软件,Linux系统对付恶意软件的三款应用软件
  17. 【Leetcode】17回溯(电话号码的字母组合)
  18. 3dmax人头建模详细图文教程来了,实用性非常强
  19. 校园网ARP攻击的防御
  20. seo小白掌握必备常用seo工具以及seo工具的使用

热门文章

  1. #1181 : 欧拉路·二(无向图的欧拉路)
  2. 1109: 胥哥的DOTA-水题(直接做,时间也不超限)
  3. 升学在线如何从容应对流量高峰?
  4. 阿里云 Serverless 事件总线 EventBridge 重磅发布
  5. 还在为系统迁移烦恼?掌握这些“基本法”解锁更多可能
  6. 启动T0运行的C语言语句是,单片机填空题期末复习。、
  7. 当我们谈游戏优化时,我们谈些什么
  8. 建立海盗的天堂:盗贼之海的AI设定(三):巨齿鲨、海怪和骷髅船的AI运行
  9. java定时执行一段代码
  10. 开源创新、软件定义网络和网络功能虚拟化特性