1. //单向链表类
  2. publicclassLinkList{
  3.  
  4.     //结点类
  5.     publicclassNode{
  6.         publicObject data;
  7.         publicNode next;
  8.  
  9.         publicNode(Object obj,Node next){
  10.             this.data = obj;
  11.             this.next = next;
  12.         }
  13.     }
  14.  
  15.     Node head;          //记录头结点信息即可(头结点下标为-1)
  16.     int size;
  17.  
  18.     publicLinkList()
  19.     {
  20.         this.head =newNode(null, null);
  21.         this.size =0;
  22.     }
  23.  
  24.     //定位
  25.     publicNode locate(int index) throws Exception
  26.     {
  27.         //容错性
  28.         if(index <-1|| index > size)
  29.             thrownewException("参数错误!");
  30.  
  31.         //定位到temp指向第index个(index为下标,从0开始)
  32.         Node temp = head;
  33.         for(int i =-1; i < index; i++)
  34.             if(temp != null)
  35.                 temp = temp.next;
  36.  
  37.         return  temp;
  38.     }
  39.  
  40.  
  41.     publicvoiddelete(int index) throws Exception
  42.     {
  43.         //容错性
  44.         if(isEmpty())
  45.             thrownewException("链表为空,无法删除!");
  46.         if(index <0|| index > size -1)
  47.             thrownewException("参数错误!");
  48.  
  49.         Node temp = locate(index -1);                        //定位到要操作结点的前一个结点对象
  50.         temp.next = temp.next.next;
  51.         size--;
  52.     }
  53.  
  54.  
  55.     publicvoid insert(int index,Object obj) throws Exception
  56.     {
  57.         //容错性
  58.         if(index <0|| index > size )
  59.             thrownewException("参数错误!");
  60.  
  61.         Node temp = locate(index -1);                        //定位到要操作结点的前一个结点对象
  62.         Node p =newNode(obj,temp.next);
  63.         temp.next = p;
  64.         size++;
  65.     }
  66.  
  67.     public boolean isEmpty(){
  68.         return size==0;
  69.     }
  70.  
  71.     publicint size(){
  72.         returnthis.size;
  73.     }
  74.  
  75. }
  1. publicclassTest{
  2.  
  3.     publicstaticvoid main(String[] args) throws Exception{
  4.         LinkListlist=newLinkList();
  5.         for(int i =0; i <10; i++){
  6.             int temp =((int)(Math.random()*100))%100;
  7.             list.insert(i, temp);
  8.             System.out.print(temp +" ");
  9.         }
  10.  
  11.         list.delete(4);
  12.         System.out.println("\n"+"after deleting the 5th number:");
  13.         for(int i =0; i <list.size; i++){
  14.             System.out.print(list.locate(i).data.toString()+" ");
  15.         }
  16.     }
  17.  
  18. }
输出:
  1. 29263748496266877839
  2. after deleting the 5th number:
  3. 292637486266877839 
来自为知笔记(Wiz)

转载于:https://www.cnblogs.com/Doing-what-I-love/p/5533090.html

单向链表JAVA代码相关推荐

  1. 浅谈:数据结构之单链表,java代码演示单链表

    单链表 本文是观看尚硅谷韩老师视频学习总结,部分来源网络. 单链表介绍 链表是一种物理存储单元上非连续.非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的.链表由一系列结点(链表中每 ...

  2. 反转单向链表(JAVA)

    在微博看到,有人说8个应届毕业生没有人写出o(1)空间复杂度,o(n)时间复杂度的反转单向链表. (不是我自己想的) public void reverseList(ListNode head) {L ...

  3. 2021-9-下旬 数据结构-线性表-链表-java代码实现(复习用)

    链表涉及到指针了,这里我还不了解java里对指针的隐藏,又由于以前学过C++里的指针,二者混淆,导致一开始非常蒙,出了很多问题,当然后来随着边写边查,基本都解决了. 顺便学习了一下java里的泛型 / ...

  4. [Java数据结构][3]单链表以及双向链表Java代码实现

    单链表Java代码实现,以水浒英雄链表为例 文章目录 单链表Java代码实现,以水浒英雄链表为例 定义一个英雄链表 定义一个SingleLinkedList 用于管理结点 初始化头结点以及添加结点到单 ...

  5. java集合单向链表_Java实现单向链表数据结构

    本文章同步到本人的博客站点 燕归来 链表是一种数据结构,和数组同级.比如,Java中我们使用的ArrayList,其实现原理是数组.而LinkedList的实现原理就是链表了.链表在进行循环遍历时效率 ...

  6. 长风破浪会有时:单向链表、双向链表和循环链表图文解析

    链表的种类有很多.我们常常会用到的链表有:单向链表.双向链表和循环链表. 链表不同于数组的地方在于:它的物理存储结构是非连续的,也就是说链表在内存中不是连续的,并且无序.它是通过数据节点的互相指向实现 ...

  7. JavaScript的数据结构与算法(三) —— 单向链表

    链表 链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续放置的.每个元素由一个存储元素本事的节点和一个指向下一个元素的引用组成.相对于传统的数组,链表的一个好处在于,添加或者删除元素 ...

  8. 单向链表 双向链表 java代码实现

    文章目录 单向链表 代码实现 单元测试 控制台打印 头插法 尾插法 双向链表 代码实现 单元测试 控制台打印 头插法 尾插法 单向链表 代码实现 package csdn.dreamzuora.lis ...

  9. Java数据结构与算法-SingleLinkedList单向链表插入,删除,查找,修改详解及代码

    SingleLinkedList单向链表插入,删除,查找,修改详解及代码 单向链表学习目标 1. 链表的介绍 2. 单向链表的存储特点以及原理 3. 基本操作:插入,删除等 4. 单向链表应用场景举例 ...

最新文章

  1. 自己动手做一个小Linux-2
  2. 你以为在做的是微服务?不!你只是做了个比单体还糟糕的分布式单体!
  3. mysql 设置电脑时间设置_怎样设置mysql密码
  4. 【NLP】授人以渔:分享我的文本分类经验总结
  5. bzoj4025-二分图【线段树分治,并查集】
  6. java.sql.SQLException: Access denied for user ‘root‘@‘hadoop001‘ (using password: YES)
  7. CELL_TYPE_STRING cannot be resovled or is not a field
  8. 下一代防火墙评测--网界
  9. TikTok和抖音差别大吗?
  10. 可口可乐中国联袂青年志发布《中国青年「在乎力」报告》
  11. html怎么设置视频为背景图片,如何给视频加上背景图片
  12. 微信域名防封的3种方案
  13. 西门子smart plc远程监控应用实例
  14. SpringBoot生成二维码 扫描并可下载文件
  15. 用Android 写生成的梅花
  16. 京东到家数据构造平台设计与实践
  17. 详解物联网常用协议:IIC和RS485通信协议
  18. matlab二阶滤波器设计,基于matlab的各类滤波器设计
  19. 函数中的形式参数和实际参数
  20. 【亡羊补牢】JS灵魂之问 第23期 修炼内功 关于闭包的回顾

热门文章

  1. Oracle 小知识点
  2. java 枚举转byte_如何在java中将一个枚举转换为另一个枚举?
  3. 区块链是互联网未来十年中举足轻重的技术
  4. 全栈Python Flask教程-建立社交网络
  5. javascript功能_功能性JavaScript简介
  6. 1007 Maximum Subsequence Sum(两种思路)
  7. (C++)1020 月饼 简单贪心
  8. Linux火狐解压完运行不了,在Ubuntu系统下firefox账号无法登录的解决
  9. 找java培训机构如何挑选
  10. js 创建一条通用链表