专栏首页用代码征服天下数据结构——线性表之顺序存储结构

数据结构——线性表之顺序存储结构

概念:

  • 线性表顺序存储结构中的元素拥有一个直接前驱元素,和一个直接后继元素;线性表的第一个元素只有直接后继元素,最后一个元素只有直接前驱元素
  • 线性表一旦创建,长度一般都是固定的,这是它的最大容量
  • 线性表中元素个数只能小于等于线性表长度

线性表的基本操作:

  1 public class SeqList {
  2     
  3     final int defaultSize=10;
  4     int maxSize;// 顺序表的最大长度
  5     int size;// 线性表的当前长度
  6     static Object[] listArray;//存储线性表的数组
  7     
  8     
  9     public SeqList(int size) {
 10         initiate(size);
 11     }
 12     
 13     public SeqList() {
 14         initiate(defaultSize);
 15     }
 16     
 17     //初始化线性表
 18     public void initiate(int sz) {
 19         maxSize=sz;
 20         size=0;
 21         listArray=new Object[sz];
 22     }
 23     
 24     //线性表的插入
 25     public void insert(int i,Object obj) throws Exception{
 26         //线性表已经满了
 27         if(size==maxSize) {
 28             throw new Exception("线性表已经满了");
 29         }
 30         if(i==0) {
 31             listArray[i]=obj;
 32         }else {
 33             //插入位置越界
 34             if(i<0||i>maxSize) {
 35                 throw new Exception("参数有误");
 36             }else {
 37                 for(int j=size;j>=i;j--) {
 38                     listArray[j]=listArray[j-1];
 39                 }
 40                 listArray[i]=obj;
 41                 size++;
 42             }
 43         }
 44         
 45     }
 46     
 47     //线性表的删除
 48     public void delete(int i) throws Exception{
 49         if(size==0) {
 50             throw new Exception();
 51         }
 52         if(i<0||i>maxSize) {
 53             throw new Exception("参数有误");
 54         }else {
 55             for(int j=i;j<=size;j++) {
 56                 listArray[j-1]=listArray[j];
 57             }
 58             listArray[size]=null;
 59             size--;
 60         }
 61         
 62     }
 63     
 64     
 65     //获取线性表中的元素
 66     public Object getData(int i)throws Exception{
 67         if(size==0) {
 68             throw new Exception("顺序表为空,无法返回元素");
 69         }
 70         if(i<0||i>maxSize) {
 71             throw new Exception("参数错误");
 72         }
 73         return listArray[i];
 74     }
 75     
 76     //获取线性表的长度
 77     public int getSize() {
 78         return listArray.length;
 79     }
 80     
 81     //判断线性表是否为空
 82     public boolean isNull() {
 83         if(listArray.length==0) {
 84             return true;
 85         }
 86         return false;
 87     }
 88     
 89     public static void main(String[] args) throws Exception {
 90         SeqList list=new SeqList(10);
 91         list.insert(0,0);
 92         list.insert(1,1);
 93         list.insert(2,2);
 94         list.insert(3,3);    
 95         list.insert(4,4);
 96         printArr(listArray);
 97         list.delete(3);
 98         System.out.println();
 99         printArr(listArray);
100     }
101     
102     
103     public static void printArr(Object[] obj) {
104         for (Object object : obj) {
105             System.out.print(object+"-");
106         }
107     }
108     
109 }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 各种递归算法

    说故事的五公子
  • java运算符那些事

    &&先运算&&左边的算式,如果为假,则直接停止,后面不管有多少运算式都不再运算,如果为真则继续判断后面的式子,只有所有的条件全部成立,才会执行下面的程序

    说故事的五公子
  • Java实现生产者消费者

    生产/消费者问题是个非常典型的多线程问题,涉及到的对象包括“生产者”、“消费者”、“仓库”和“产品”。他们之间的关系如下: (01) 生产者仅仅在仓储未满时候...

    说故事的五公子
  • size_type、size_t、differentce_type以及ptrdiff_t

    目录(?)[-] size_type size_t different_type ptrdiff_t size_t是unsigned类型,用于指明数...

    猿人谷
  • Longest Word in Dictionary through Deleting

    Tyan
  • Java 实现高斯模糊算法处理图像

    高斯模糊(英语:Gaussian Blur),也叫高斯平滑,是在Adobe Photoshop、GIMP以及Paint.NET等图像处理软件中广泛使用的处理效果...

    Star先生
  • SwiftUI:创建隐式动画

    我们回到另一个技术项目,这次我们将要看的是快速,精美且真正被低估的东西:动画 Animation。

    韦弦zhy
  • SLUB结构体创建及创建slab分析

    在上一篇文章中我们通过一个简单的例子大概描述了如何创建SLUB缓存,如何分配一个object。本文详细描述下涉及的结构体,从结构体的描述中就可以大概理解slub...

    DragonKingZhu
  • Android单个RecyclerView实现列表嵌套的效果

    很多时候会遇到一种需求,列表里面有列表,像这种需求之前一般都是用多个列表控件互相嵌套来实现,但是这样很容易出现一些问题,例如滚动冲突、数据显示不全、多余的逻辑处...

    砸漏
  • C#中谁最快:结构还是类?

    在内存当道的日子里,无论什么时候都要考虑这些代码是否会影响程序性能呢? 在现在的世界里,几乎不会去考虑用了几百毫秒,可是在特别的场景了,往往这几百毫米确影响了整...

    梁规晓

扫码关注云+社区

领取腾讯云代金券