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. js 验证表单 js提交验证类

    附加:js验证radio是否选择 <script language="javascript">function checkform(obj){for(i=0;i< ...

  2. POJ 1240 Pre-Post-erous! 解题报告

    题意: 给出一个m叉树的前,后序遍历求这样的树有多少种. Solution: 我们知道前序遍历的第一个点一定是根节点,后序遍历的最后一个点一定是根节点. 由此,我们只一要确定对于每一个节点,它有多少个 ...

  3. 推荐一个有趣的软件"Process Monitor"

    同事给的,用起来感觉很不错,官网地址:http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx 以下为官网介绍: Introducti ...

  4. CMake----if与option使用小记

    在CMake中if语法比较简单,if后面括号中的参数随着CMake版本的推进,在else和endif中也可以不用写了. if(address) else() endif() 对于if语法,比较常用的就 ...

  5. CentOS6.5安装LAMP环境APACHE的安装

    1.卸载apr.apr-util [root@centos6 LAMP]# yum remove apr apr-util 2.编译安装apr-1.5.1.tar.gz [root@centos6 L ...

  6. 挂载NTFS

    1.安装ntfs-3g wget https://tuxera.com/opensource/ntfs-3g_ntfsprogs-2015.3.14.tgz --no-check-certificat ...

  7. 用批处理来重启IIS的应用程序池

    批处理很简单,先Stop再Start就行,代码如下(apppoolName是应用程序池的实例名):c:\windows\system32\inetsrv\AppCmd.exe stop apppool ...

  8. C++学习笔记5——类的继承

    简介: 通过继承联系在以前的类构成一种层次关系.通常在层次关系的根部有一个基类,其他类则直接或间接地从基类继承,这些继承得到的类称为类的派生类. 作用: 1.子类拥有父类的所有成员函数和成员变量. 2 ...

  9. 栈的讲解 和 栈的生长方向 源代码技巧分析,简直没SEI 啦

    函数的局部变量,都是存放在"栈"里面,栈的英文是:STACK.STACK的大小,我们可以在stm32的启动文件里面设置,以战舰stm32开发板为例,在startup_stm32f1 ...

  10. getsockname和getpeername函数

    这2个函数或者返回与某个套接字关联的本地协议地址(getsockname),或者返回与某个套接字关联的外地协议地址(getpeername) int getsockname(int sockfd, s ...