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 
 
 
 
 

单向链表JAVA代码的更多相关文章

  1. [Java算法分析与设计]--单向链表(List)的实现和应用

    单向链表与顺序表的区别在于单向链表的底层数据结构是节点块,而顺序表的底层数据结构是数组.节点块中除了保存该节点对应的数据之外,还保存这下一个节点的对象地址.这样整个结构就像一条链子,称之为" ...

  2. JAVA单向链表实现

    JAVA单向链表实现 单向链表 链表和数组一样是一种最常用的线性数据结构,两者各有优缺点.数组我们知道是在内存上的一块连续的空间构成,所以其元素访问可以通过下标进行,随机访问速度很快,但数组也有其缺点 ...

  3. 线性表的Java实现--链式存储(单向链表)

    单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始. 链式存储结构的线性表将采用一组任意的存储单元存放线性表中的数据元素.由于不需要按顺序存储,链表在 ...

  4. 二叉树、栈、队列、链表的Java代码实现

    这是我的学习总结. 如有文章存在谬误,欢迎指出,有其他意见或者建议,也欢迎留言 二叉树链表 前序遍历:先访问根节点,然后访问左子树.右子树 中序遍历:先访问左子树,然后访问根节点.右子树 后序遍历:先 ...

  5. Java实现单向链表基本功能

    一.前言 最近在回顾数据结构与算法,有部分的算法题用到了栈的思想,说起栈又不得不说链表了.数组和链表都是线性存储结构的基础,栈和队列都是线性存储结构的应用- 本文主要讲解单链表的基础知识点,做一个简单 ...

  6. JAVA 单向链表

    package com.session.link; /** * 单向链表 */public class LinkedList<T> { private Node head;//指向链表头节 ...

  7. C语言实现简单的单向链表(创建、插入、删除)及等效STL实现代码

    实现个算法,懒得手写链表,于是用C++的forward_list,没有next()方法感觉很不好使,比如一个对单向链表的最简单功能要求: input: 1 2 5 3 4 output: 1-> ...

  8. Java 单向链表学习

    Java 单向链表学习 链表等同于动态的数组:可以不同设定固定的空间,根据需要的内容动态的改变链表的占用空间和动态的数组同一形式:链表的使用可以更加便于操作. 链表的基本结构包括:链表工具类和节点类, ...

  9. java对单向单向链表的操作

    概述:众所周知,数据对于数据的存储时连续的,也就是说在计算机的内存中是一个整体的.连续的.不间断的ADT数据结构.伴随的问题也会随之出现,这样其实对于内存的动态分配是不灵活的.而链表具备这个优点.因此 ...

随机推荐

  1. Tomcat部署多个项目及相关配置

    1.配置多个项目 在tomcat的conf目录下,找到server.xml,在其中添加<Host>节点即可进行多个项目的部署 <Host name="localhost&q ...

  2. Extjs中numberfield小数位数设置

    在默认的情况下,使用numberfield控件时只会显示两位小数,有的时候需要根据业务来确定显示小数的位数.通过设置下面的属性可以达到我们想要的目的: text : '存煤量(万吨)', dataIn ...

  3. ul ol 列表的样式的控制

    ul( Unordered List)无序列表 ol(Ordered List)有序列表 列表的样式: 列表原有符号.自定义图形符号.符号显示位置. 1.列表符号 是显示于每一个列表项目前的符号标识. ...

  4. jQuery解析JSON的问题

    在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. JS ...

  5. 浅谈MIPS地址对齐问题

    1.什么叫地址对齐? RISC 下使用访存指令读取或写入数据单元时,目标地址必须是所访问之数据单元字节数的整数倍,这个叫做地址对齐. 2.计算机主要的架构分哪两类?及其地址对齐在两者的区别? 计算机主 ...

  6. jquery获取浏览器的高度和宽度

    <script type="text/javascript"> $(document).ready(function() { alert($(window).heigh ...

  7. CodeForces 478B 第六周比赛B题

    B - B Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u   Descriptio ...

  8. Topk引发的一些简单的思考

    软件工程课程的一个题目:写一个程序,分析一个文本文件中各个词出现的频率,并且把频率最高的10个词打印出来.文本文件大约是30KB~300KB大小. 首先说一下这边的具体的实现都是在linux上实现的. ...

  9. 转:Hprose for php(二)——服务器

    文章来自于:http://blog.csdn.net/half1/article/details/21252879 本文将介绍Hprose for php服务器的更多细节 1.发布服务 Hprose提 ...

  10. POJ1062 昂贵的聘礼(最短路)

    题目链接. 分析: 一开始以为简单的DFS,直接做,MLE了. 本体应该用最短路径(Dijkstra算法)做. 此题的关键在于等级限制的处理,采用枚举,即假设酋长等级为5,等级限制为2,那么需要枚举等 ...