Java数据结构(线性表-->顺序表简单实现)

线性表是一种可以在任意位置插入和删除元素,由n个同类型元素组成的线性结构。主要包括顺序表,单链表,循环单链表,双向链表和仿真链表。应用比较广泛的是顺序表和单链表。
  2 下面是线性表的接口,主要操作包括插入元素,删除元素,取得元素,得到线性表元素个数,判断线性表是否为空。
  3 package com.linear.table;
  4 /**
  5  * 操作顺序表的接口方法
  6  * @author Mature
  7  *
  8  */
  9 public interface MatureListInterface {
 10 public void add(Object object) throws Exception;
 11 public void remove(int index) throws Exception;
 12 public Object get(int index) throws Exception;
 13 public boolean isEmpty();
 14 public int size();
 15 public void initList(int size);
 16
 17 }
 18
 19 顺序表的实现如下:
 20 package com.linear.table;
 21 /**
 22  *
 23  * @author Mature
 24  *
 25  */
 26 public class MatureList implements MatureListInterface {
 27     int defaultSize = 10;// 默认容量
 28     int size = 0;// 数组元素个数
 29
 30     Object[] objectList = null;// 存储元素数组
 31
 32     MatureList() {// 默认容量构造器
 33         initList(defaultSize);
 34     }
 35
 36     public MatureList(int listSize) {// 指定容量构造器
 37         this.defaultSize = listSize;
 38         initList(defaultSize);
 39
 40     }
 41
 42     @Override
 43     public void initList(int size) {
 44
 45         objectList = new Object[size];
 46
 47     }
 48
 49     /**
 50      * 添加一个元素(从1开始)
 51      */
 52     @Override
 53     public void add(Object object) throws Exception {
 54         if (size == defaultSize) {
 55             throw new Exception("顺序表已满,不能继续插入");
 56
 57         } else {
 58
 59             objectList[size] = object;// 进行数组添加
 60             size++;
 61         }
 62
 63     }
 64
 65     /**
 66      * 删除指定元素(从1开始)
 67      */
 68     @Override
 69     public void remove(int index) throws Exception {
 70         Object[] objectListTmp = new Object[defaultSize];// 创建一个tmp数组
 71         if (index < 0 || index > defaultSize || index > size) {
 72             throw new Exception("参数错误,remove数组越界");
 73
 74         } else {
 75
 76             for (int i = index; i <= size - 1; i++) {
 77
 78                 objectList[i - 1] = objectList[i];
 79
 80             }
 81             System.arraycopy(objectList, 0, objectListTmp, 0, size - 1);// 进行数组复制,
 82             objectList = null;
 83             this.objectList = objectListTmp;// 将新的数组复制到objectList
 84             objectListTmp = null;
 85             size--;
 86         }
 87
 88     }
 89
 90     /**
 91      * 获取指定元素(从1开始)
 92      */
 93     @Override
 94     public Object get(int index) throws Exception {
 95         if (index > defaultSize || index < 0) {
 96             throw new Exception("参数错误,get数组越界");
 97
 98         } else {
 99             return objectList[index - 1];
100         }
101
102     }
103
104     /**
105      * 判断线性表(顺序表)是否为空
106      */
107     @Override
108     public boolean isEmpty() {
109         if (objectList.length == 0) {
110
111             return true;
112         } else {
113             return false;
114
115         }
116
117     }
118
119     /**
120      * 返回线性表(顺序表)大小
121      */
122     @Override
123     public int size() {
124
125         return size;
126     }
127
128 }
129
130 测试类:
131 package com.linear.table;
132 /**
133  *
134  * @author Mature
135  *测试类
136  */
137 public class Test {
138 public static void main(String[] args) throws Exception {
139     MatureList matureList=new MatureList(10);
140     /**
141      * 添加5个元素
142      */
143     matureList.add("mature1");
144     matureList.add("mature2");
145     matureList.add("mature3");
146     matureList.add("mature4");
147     matureList.add("mature5");
148     System.out.println("元素个数:"+matureList.size);
149     System.out.println("元素1:"+matureList.get(1));
150     System.out.println("元素2:"+matureList.get(2));
151     System.out.println("元素3:"+matureList.get(3));
152     System.out.println("删除元素3");
153     matureList.remove(3);//删除元素1
154     System.out.println("元素个数:"+matureList.size);
155     System.out.println("遍历:");
156     for(int i=1;i<=matureList.size;i++){
157         System.out.println("元素:"+matureList.get(i));
158
159     }
160 }
161 }
162
163 测试效果:
164 元素个数:5
165 元素1:mature1
166 元素2:mature2
167 元素3:mature3
168 删除元素3
169 元素个数:4
170 遍历:
171 元素:mature1
172 元素:mature2
173 元素:mature4
174 元素:mature5

原文地址:https://www.cnblogs.com/mature1021/p/9493150.html

时间: 2024-10-30 13:50:58

Java数据结构(线性表-->顺序表简单实现)的相关文章

数据结构和算法-数据结构-线性结构-顺序表 链表和哈希表

####################################################### """ # 线性表是最基本的数据结构之一,在实际程序中应用非常广泛,它还经常被用作更复杂的数据结构的实现基础. # 根据线性表的实际存储方式,分为两种实现模型: # 顺序表, # 链表, # 下面分别进行研究, """ ####################################################### &qu

java实现数据结构-线性表-顺序表,实现插入,查找,删除,合并功能

package 顺序表; import java.util.ArrayList; import java.util.Scanner; public class OrderList { /** * @param args * @author 刘雁冰 * @2015-1-31 21:00 */ /* * (以下所谓"位置"不是从0开始的数组下标表示法,而是从1开始的表示法.) * (如12,13,14,15,16数据中,位置2上的数据即是13) * * 利用JAVA实现数据结构-线性表-顺

C++数据结构与算法_2_线性表 --顺序表的应用示例

h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-bottom: 0.21cm; }h1.western { fon

C++数据结构与算法_1_线性表 --顺序表的实现与分析

顺序表的实现与分析 引 --线性表的抽象基类: template <typename T> class LinearList { public: LinearList(); ~LinearList(); virtual int Size() const = 0; //返回线性表所能够存储的最大长度 virtual int Length() const = 0; //当前线性表的长度 virtual int Search(T &x) const = 0; virtual int Loca

线性表——顺序表与单链表学习小结

线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列. 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表.链表.栈.队列.字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线.但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以数组和链式结构的形式存储. 顺序表 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储.在数组上完成数据的增删查改. 链表 链表是一种物理存储结构上非连续.非顺序的存储结构,数据

数据结构笔记(二)--顺序表

线性表 线性结构:最常用,最简单的一种数据结构,其中的数据元素是有序且是有限的,其 基本特点: 存在一个唯一的被称为 第一个 的数据元素 存在一个唯一的被称为 最后一个 的数据元素 除第一个元素外,每一个元素均有唯一 一个直接前驱 除最后一个元素外,每一个元素均有唯一 一个直接后继 2.1 线性表的逻辑结构 2.1.1线性表的定义 线性表(Linear List) :是由n个数据类型相同的数据元素(结点)组成的有限序列.其中 n 为不小于0的整数.数据元素的个数 n 称为线性表的长度 相关术语:

【数据结构】之顺序表和链表的比较

1.顺序表 顺序表的优点: (1) 方法简单,各种高级语言中都有数组,容易实现.(2) 不用为表示结点间的逻辑关系而增加额外的存储开销.(3) 顺序表具有按元素序号随机访问的特点. 顺序表的缺点: (1) 在顺序表中做插入删除操作时,平均移动大约表中一半的元素,因此对n较大的顺序表效率低.(2) 需要预先分配足够大的存储空间,估计过大,可能会导致顺序表后部大量闲置:预先分配过小,又会造成溢出. 2.链表 链表的优点: (1) 在链表中做插入删除操作时,不会影响前面和后面的节点,因此对n较大的链表

线性表&gt;&gt;顺序表---&gt;逆置所有元素

1 /*顺序表中所有的元素逆置 2 * 3 */ 4 #include <iostream.h> 5 using namespace std; 6 7 int main(){ 8 void reverse_arr(int arr[],int n); 9 int a[]={0,1,2,3,4,5,6,7}; 10 int n=7; 11 reverse_arr(a,n); 12 for(int i=0;i<=n;i++){ 13 cout << a[i] << &q

C#(数据结构):1.顺序表结构(2)

人生总有那么多未完的篇章,但是有时候今天你没完成的可能你以后再也不会完成.承诺的一切兴许也变成了过眼云烟.想抓住,握紧的拳头却使他们溜的更快.人生恰如初见,几多的欣喜. ----------------------------------------------------------------------------------------------万恶的分割线------------------------------------------------ 分割线都受不了了.好吧之前我们说

C#(数据结构):1.顺序表结构

我们程序员有三大优点:懒.困.自负.很荣幸我这三点都占了.但是木有关系这丝毫动摇不了我学习的决心.因为技术没有止境. -------------------------------------------------------------------------------------万恶的分割线------------------------------------------------------ 一个人生的分割线. 曾多少次我告诉自己要和昨天的自己说再见.不带走自己的过去,新中幻想着永