当前位置:  技术问答>java相关

用JAVA写链表有没用现成的类型或类?

    来源: 互联网  发布时间:2014-12-24

    本文导语:  我要用单向链表,有没用现成的类型或类? 如没有我在删除时用不用释放?(是否像C一样要释放内存) |   import java.io.*;   public class List    {   /*用变量来实现表头*/   private Node ...

我要用单向链表,有没用现成的类型或类?
如没有我在删除时用不用释放?(是否像C一样要释放内存)

|
  import java.io.*;

  public class List 

  {

  /*用变量来实现表头*/

  private Node Head=null;

  private Node Tail=null;

  private Node Pointer=null;

  private int Length=0;

  

public void deleteAll()

  /*清空整个链表*/

  {

  Head=null;

  Tail=null;

  Pointer=null;

  Length=0;

  }



  public void reset()

  /*链表复位,使第一个结点

成为当前结点*/

  {

  Pointer=null;

  }



  public boolean isEmpty()

  /*判断链表是否为空*/

  {

  return(Length==0);

  }



  public boolean isEnd()

  /*判断当前结点是否

为最后一个结点*/

  {

  if(Length==0)

  throw new java.lang.NullPointerException();

  else if(Length==1)

  return true;

  else

  return(cursor()==Tail);

  }

  public Object nextNode()

  /*返回当前结点的下一个结点的值,

并使其成为当前结点*/

  {

  if(Length==1)

  throw new java.util.NoSuchElementException();

  else if(Length==0)

  throw new java.lang.NullPointerException();

  else

  {

  Node temp=cursor();

  Pointer=temp;

  if(temp!=Tail)

  return(temp.next.data);

  else

  throw new java.util.NoSuchElementException();

  }

  }

  public Object currentNode()

  /*返回当前结点的值*/

  {

  Node temp=cursor();

  return temp.data;

  }

  

  public void insert(Object d)

  /*在当前结点前插入一个结点,

并使其成为当前结点*/

  {

  Node e=new Node(d);

  if(Length==0)

  {

  Tail=e;

  Head=e;

  }

  else

  {

  Node temp=cursor();

  e.next=temp;

  if(Pointer==null)

  Head=e;

  else

  Pointer.next=e;

  }

  Length++;

  }

  public int size()

  /*返回链表的大小*/

  {

  return (Length);

  }

  public Object remove()

  /*将当前结点移出链表,下一个结点成为当前结点,如果移出的结点是最后一个结点,则第一个结点成为当前结点*/

  {

  Object temp;

  if(Length==0)

  throw new java.util.NoSuchElementException();

  else if(Length==1)

  {

  temp=Head.data;

  deleteAll();

  }

  else

  {

  Node cur=cursor();

  temp=cur.data;

  if(cur==Head)

  Head=cur.next;

  else if(cur==Tail)

  {

  Pointer.next=null;

  Tail=Pointer;

  reset();

  }

  else

  Pointer.next=cur.next;

  Length--;

  }

  return temp;

  }

  private Node cursor()

  /*返回当前结点的指针*/

  {

  if(Head==null)

  throw new java.lang.NullPointerException();

  else if(Pointer==null)

  return Head;

  else

  return Pointer.next;

  }

  

  public static void main(String[] args)

  /*链表的简单应用举例*/

  {

  List a=new List ();

  for(int i=1;i

    
 
 

您可能感兴趣的文章:

  • 我没用过Java,请问各位大侠Java中除了/*...*/用作注释外,还有什么符号可用于注释符?
  • 各位帮忙,我想找个用JAVA的工作,可以前没用过,大家看有戏没
  • JBuilder里我在.JAVA里设了断点,可是每次调试它都跳到.class里面,Step into也没用??
  • java命名空间javax.xml.ws注释类型webserviceref成员方法: type定义参考
  • java 基本类型或可序列化类型,这里说的可序列化类型是什么意思???具体都有哪些类型??谢谢
  • java命名空间javax.annotation注释类型resource的类成员方法: authenticationtype定义及介绍
  • 如何将java.util.Date类型的日期转换成java.sql.Date类型的日期?
  • java命名空间javax.annotation注释类型resource的类成员方法: type定义及介绍
  • 请问SQL中的datetime类型于java中什么类型对应?
  • java命名空间javax.xml.ws注释类型webserviceref成员方法: value定义参考
  • java中的字符类型如何转换成String类型
  • java命名空间javax.annotation注释类型resource的类成员方法: shareable定义及介绍
  • 请教JAVA小问题:如何将含数字的String类型的对象转化为int或long类型
  • java命名空间javax.jws注释类型webparam的类成员方法: mode定义及介绍
  • ado的rs.field("字段名")可以访问任何类型的数据,那吗java里面这种问题如何处理。是不是要先判断类型然后再根据类型来使用相应的getint or getString阿!谢谢了!在线等待!
  • java命名空间javax.xml.ws注释类型webserviceref成员方法: wsdllocation定义参考
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好??? iis7站长之家
  • java命名空间javax.xml.bind.annotation注释类型xmlelementref的类成员方法: type定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间javax.xml.bind.annotation注释类型xmlenum的类成员方法: value定义及介绍
  • java的数据类型问题
  • java命名空间javax.xml.ws注释类型responsewrapper成员方法: targetnamespace定义参考
  • java协变返回类型使用示例
  • java命名空间javax.xml.ws注释类型responsewrapper成员方法: classname定义参考
  • java里基本数据类型是什么?对象么?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 我对JAVA一窍不通,可惜别人却给我一个Java的project,要我做一个安装程序,请问哪里有JAVA INSTALLER下载,而且我要不要安装java的sdk才能完成此项任务?
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍
  • 新年第一天,让我们讨论一下未来一年JAVA的发展趋势! 个人认为,JAVA将主要朝ERP和JAVA手机方面发展!
  • java命名空间java.security类keystore的类成员方法: getdefaulttype定义及介绍
  • 我想学Java,但不知道Java的实用的开发工具有那些,Java主要用在哪些方面,EJB到底是什么东西??
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getclasspath定义及介绍
  • redhat7.3下,java程序打印中文直接用java命令执行正常,用crontab执行java命令为乱码
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javaserializedobjectmimetype定义及介绍
  • 各位学java的朋友,学java的未来是什么,你们学java都用来开发什么项目啊!来者给分!!
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: javafilelistflavor定义及介绍
  • 请问java程序中的import为什么有的用java.….*,而有的又用java.….…,有什么区别吗?
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getvmname定义及介绍
  • 简单说说Java SE、Java EE、Java ME三者之间的区别


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3