`

用Java实现的顺序链表

阅读更多
java 代码
  1. package org.danlley.util;   
  2. /**  
  3.  * @version 1.0  
  4.  * @since 2006 年 9 月 17 日     14 : 42 pm  
  5.  * @author weixm  
  6.  * 说明:这是一个用数组实现的顺序表,实现了基本的增、删、查操作。  
  7.  */  
  8. public class SequenList {   
  9.  public int length=10;//初始化顺序表大小为10   
  10.  private int cur_index;//当前插入位置   
  11.  private Object[] seqList;//顺序表数据存放处   
  12.  /**  
  13.   * @author weixm  
  14.   * 说明:构造函数,用来初始化顺序表。此处用私有方法来对数据进行初始化。  
  15.   */  
  16.  public SequenList(){   
  17.   initList();   
  18.  }   
  19.  /**  
  20.   * @author weixm  
  21.   * 初始化顺序表  
  22.   */  
  23.  private void initList(){   
  24.   this.seqList=new Object[length];   
  25.  }   
  26.  /**  
  27.   * @author weixm  
  28.   * @param obj  
  29.   * 说明:此方法用来在顺序表中最后位置添加新数据,当数据添加位置超过了数组允许大小时,  
  30.   *      重新分配内存空间。并且,每加一条数据,List的当前插入位置自增“1”。  
  31.   */  
  32.  public void add(Object obj){   
  33.   if(length>0){   
  34.    if(cur_index<(length-1)){   
  35.     seqList[cur_index]=obj;   
  36.     cur_index++;   
  37.    }else{   
  38.     resizeList(seqList);   
  39.     seqList[cur_index]=obj;   
  40.     cur_index++;   
  41.    }   
  42.   }else{   
  43.    System.err.print("The sequences are not initialed properly ! ");   
  44.   }   
  45.  }   
  46.  /**  
  47.   * @author weixm  
  48.   * @param index  
  49.   * @param obj  
  50.   * 说明:此方法用来在数组的任意位置添加一个新数据。如果任意插入的数据位置刚好是最后一个元素  
  51.   *      则直接调用 add(Object obj) 方法,如果添加的数据超出了原始数据的边界值,则List  
  52.   *      会自动对空间进行扩充。因此,允许添加数据的当前位置超出数据边界。但是每次插入的数据  
  53.   *      索引大小不能超过 length*3/2+1 ,否则,系统会抛出数组越界异常。  
  54.   */  
  55.  public void add(int index,Object obj){   
  56.   if(index==cur_index+1){   
  57.    add(obj);   
  58.   }else{   
  59.    int old_len=length;   
  60.    if(index>length-1){   
  61.     resizeList(seqList);   
  62.    }   
  63.    System.arraycopy(seqList,index,seqList,index+1,old_len-index);   
  64.    seqList[index]=obj;   
  65.    cur_index=index;   
  66.   }   
  67.  }   
  68.  /**  
  69.   * @author weixm  
  70.   * @param obj  
  71.   * @return  
  72.   * 说明:此方法用于进行元素查找,如果要查找的元素在数据中存在,则返回数据所在位置,如果  
  73.   *      元素在数据中没有找到,则直接返回 -1 。  
  74.   */  
  75.  public int findElement(Object obj){   
  76.   int find_index=-1;   
  77.   for(int i=0;i
  78.    if(obj.equals(seqList[i])){   
  79.     find_index=i;   
  80.    }   
  81.   }   
  82.   return find_index;   
  83.  }   
  84.  /**  
  85.   * @author weixm  
  86.   * @param index  
  87.   * @return  
  88.   * 说明:此方法用来得到某个确定位置的元素。  
  89.   */  
  90.  public Object get(int index){   
  91.   return seqList[index];   
  92.  }   
  93.  /**  
  94.   * @author weixm  
  95.   * @param seqList_low  
  96.   * 说明:重新划分并扩充数据所占内存空间,具体扩充方式为: length*3/2+1 。  
  97.   */  
  98.  public void resizeList(Object[] seqList_low){   
  99.   int resize=length*3/2+1;   
  100.   Object[] seqList_upp=new Object[resize];   
  101.   System.arraycopy(seqList_low,0,seqList_upp,0,length);   
  102.   seqList=seqList_upp;   
  103.   length=resize;   
  104.  }   
  105.  /**  
  106.   * @author weixm  
  107.   * @param args  
  108.   * 说明:测试用例  
  109.   */  
  110. // public static void main(String[] args)throws Exception{   
  111. //  try{   
  112. //   SequenList list=new SequenList();   
  113. //   for(int i=0;i<100;i++){   
  114. //    list.add(""+i);   
  115. //    //System.out.println("        "+list.get(i));   
  116. //   }   
  117. //   list.add(133," TEST ");   
  118. //   System.out.println(""+list.findElement(""+98));   
  119. //   System.out.println(""+list.findElement(" TEST "));   
  120. //   System.out.println(""+list.findElement("TEST"));   
  121. //   for(int i=0;i  
  122. //    System.out.println("        "+list.get(i));   
  123. //   }   
  124. //   System.out.println("++++++++++++ "+list.length);   
  125. //  }catch(Exception e){   
  126. //   throw new Exception(e);   
  127. //  }   
  128. // }   
  129. }  
分享到:
评论

相关推荐

    java 实现倒序链表

    在本篇文章中,我们将探讨如何使用Java来实现一个倒序链表的功能。链表作为一种常见的数据结构,在计算机科学中有着广泛的应用,而倒序链表则是链表操作中的一项基本技能,对于理解链表的工作原理和提升编程能力都...

    用链表实现线性表java

    本篇将深入探讨如何用链表来实现线性表,并通过提供的`ChainList.java`和`ListInterface.java`文件来理解其实现细节。 首先,线性表具有顺序访问的特点,其元素可以通过索引进行访问。链表是一种非连续存储结构,每...

    java链表 个人总结

    本文将结合个人学习心得,深入探讨Java链表的核心概念、实现方式以及与其他编程语言的互通性。 首先,链表是一种线性数据结构,与数组不同,它的元素在内存中不是连续存储的。每个元素(称为节点)包含两部分:数据...

    Java实现单链表以及单链表的操作.zip

    本教程将深入探讨如何使用Java语言来实现单链表及其相关操作。 首先,我们来理解单链表的基本概念。单链表由一系列节点组成,每个节点包含两部分:数据域(用于存储数据)和指针域(指向下一个节点)。链表的最后一...

    顺序表java实现

    在这个项目中,我们看到一个用Java实现的顺序表,这涉及到接口定义、类的设计以及方法的实现。 首先,我们有接口`SequentialList`,它定义了顺序表应该具有的操作。这个接口可能包括添加元素(`add`)、删除元素(`...

    java模拟实现数组链表树图等数据结构

    Java作为一种广泛使用的编程语言,提供了多种内置的数据结构,如数组、链表、树和图。本项目“java模拟实现数组链表树图等数据结构”旨在帮助初学者通过实际操作来理解这些基本数据结构及其工作原理。 首先,数组是...

    MLDN魔乐JAVA_13链表.MLDN魔乐JAVA_13链表.rar

    在本教程"MLDN魔乐JAVA_13链表"中,我们将深入探讨链表的概念、类型以及如何在Java中实现和操作链表。 1. 链表的基本概念: 链表不同于数组,它的元素在内存中并不是连续存储的。每个元素(也称为节点)包含两部分...

    java实现链表.pdf

    Java 语言提供了多种方式来设计链表,可以使用结构体来定义节点,例如: ```java Class NODE{ String info; NODE link; } ``` 链表的操作 链表的操作包括初始化、搜索、插入和删除等。下面将详细介绍这些操作的...

    Java实现单向链表反转

    Java实现单向链表反转是指将单向链表的顺序颠倒,例如原链表为A-&gt;B-&gt;C-&gt;D-&gt;E-&gt;F,反转后变为F-&gt;E-&gt;D-&gt;C-&gt;B-&gt;A。这种操作在实际开发中非常有用,例如在数据处理、数据分析等领域。 单向链表反转的实现方式有两种,一...

    java 数据结构 遍历链表程序

    本篇文章将深入讲解Java中链表数据结构的遍历程序,以及如何通过`LinkListFour.java`这个文件来实现链表的遍历。 首先,链表不同于数组,它不连续存储数据,而是通过节点间的引用关系构成。每个节点包含两部分:...

    java链表反转及排序

    在“java链表反转及排序”这个主题中,我们将探讨如何在Java中实现单向链表的反转和排序。首先,我们创建一个链表节点类,包含数据和指向下一个节点的引用: ```java public class ListNode { int val; // 节点值 ...

    链表(数据结构--Java版)

    2. `OrderedLinkedList.java` - 这可能是一个有序链表的实现,意味着链表中的元素按照特定的顺序(如升序或降序)排列。在插入新元素时,它会确保新元素位于正确的位置,保持链表的排序。 3. `LinkedListClass.java...

    Java语言编写的数据结构-链表实现

    本文将详细探讨如何使用Java语言来实现链表,包括顺序表和单链表、双链表。 首先,我们来看顺序表。顺序表是一种线性数据结构,其中元素在内存中按顺序存储。在Java中,我们可以使用数组来实现顺序表。当插入或删除...

    java链表的程序

    5. **查找操作**:搜索链表中特定值的节点,可以使用迭代或递归实现。 6. **遍历链表**:输出链表的所有元素,通常通过从头节点开始,沿着next引用前进。 7. **长度计算**:返回链表中的元素数量,可以通过遍历...

    链表实现源码(C、C++、JAVA)

    JAVA中,链表的实现通常使用`LinkedList`类,它是`java.util`包的一部分。然而,为了理解链表的底层工作原理,我们可以自定义一个简单的链表类: ```java public class LinkedList { private class Node { int ...

    doublelink.zip_DoubleLink java_双向链表实现

    在本文中,我们将深入探讨如何使用Java编程语言实现一个高效的双向链表数据结构,并通过测试用例进行验证。首先,让我们了解双向链表的基本概念。 双向链表是一种线性数据结构,其中每个节点包含两个指针,分别指向...

    基于java的模拟链表设计

    Java 提供了 LinkedList 类作为容器类,实现了 List 接口,方便开发者使用链表数据结构。 3. 随机链表的生成 在本模拟链表设计中,首先会随机生成至少10个元素,这些元素将被用来构造链表。随机生成可以使用 Java ...

Global site tag (gtag.js) - Google Analytics