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

概念:

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

线性表的基本操作:

  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 }

原文地址:https://www.cnblogs.com/wgblog-code/p/11172107.html

时间: 2024-11-12 09:49:36

数据结构——线性表之顺序存储结构的相关文章

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

一.线性表的顺序存储需要三个属性 1.存储空间的起始位置 2.线性表的最大存储容量 3.线性表的当前长度 二.线性表的时间复杂度: 线性表的顺序存储结构,在存.读数据时,不管是哪个位置,时间复杂度都是O(1); 插入删除的时间复杂度是O(n),所以线性表适合元素个数不太变化,而更多是存取数据的应用. 三.线性表的结构示意图: 四.代码示例: /*我们的计量方式,除下标从0开始外,其余都从1开始算,所以只有在涉及访问数组的时候,要注意是否要+1 或-1*/ #include <stdio.h>

数据结构 --- 线性表(顺序存储结构)

工程目录结构: Common.cs: 1 namespace DataStructure.Common 2 { 3 public class CommonClass 4 { 5 public const int DS_ListMaxSize = 20; //线性表的最大容量 6 } 7 } DS_List.cs: 1 using System; 2 using DataStructure.Common; 3 using ElemType = System.Int32; // ElemType 用

数据结构之线性表之顺序存储结构(3)

1 前言 经过前两张的理论基础,我相信大家都能简单的明白了数据结构和算法一些常用的概念了,从今天开始我们开始学习数据结构中线性表,一起叩响数据结构的大门. 2 详述 线性表(List):零个或者多个数据元素的有限序列. 如果用数学语言来进行定义: (声明:由于下标不是很好弄出来,所以只能表示下面这种方式了,请见谅!) 若线性表记作(a1,...ai-1,ai,ai+1,...,an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素.当i

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

小学生放学都是要按顺序排队的,一个接一个,每个小学生的前后位置是固定的,这样便于迅速清点. 其实这就是一个线性表,从这件事里我们就可以找到很多关于线性表的特性,如 1.线性表是一个序列,它是有顺序的(排队) 2.第一个元素无前驱,最后一个无后继,其他每个元素都有一个前驱和后继(一个接一个) 3.元素是有限的(小学生的个数是有限的) 4.数据类型都相同(都是小学生在排队) 说明白线性表示什么,下面我们直接看线性表的实现 线性表的实现分顺序存储结构和链式存储结构 顺序存储结构: #define LI

《大话数据结构》笔记(2)--线性表的顺序存储结构

线性存储结构的Java实现代码: https://github.com/Lyu0709/data-structure/tree/master/src/com/coding/basic/array 第三章 线性表 定义 数学语言 若将线性表记为(a1, ..., ai-1, ai, ai+1, ..., an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素.当i=1,2,..,n-1时,ai有且仅有一个直接后继,当n=2,3,...,n

线性表之顺序存储结构(C语言动态数组实现)

线性表的定义:N个数据元素的有限序列 线性表从存储结构上分为:顺序存储结构(数组)和 链式存储结构(链表) 顺序存储结构:是用一段连续的内存空间存储表中的数据 L=(a1,a2,a3....an) 链式存储结构:是用一段一段连续的内存空间存储表中每一行的数据,段与段之间通过一个引用(指针)相互连接来,形成一个链式的存储结构 看到顺序存储结构的图示,我们可能会马上联想到C语言的数组.是的,数组就是一种典型的顺序存储数据结构.下面我通过一个实例,来实现对顺序存储结构中的数据增.删.改.查的操作. 首

简要比较线性表的顺序存储结构和链式存储结构

我们分别从存储分配方式.时间性能.空间性能三方面来做对比. 存储分配方式 顺序存储结构用一段连续的存储单元依次存储线性表的数据元素. 单链表采用链式存储结构,用一组任意的存储单元存放线性表的元素. 时间性能 <1>查找 顺序存储结构O(1) 单链表O(n) <2>插入和删除 顺序存储结构需要平均移动表长一半的元素,时间为O(n) 单链表在计算出某位置的指针后,插入和删除时间仅为O(1) 空间性能 顺序存储结构需要预分配存储空间,分大了,容易造成空间浪费,分小了,容易发生溢出. 单链

第6课 - 线性表的顺序存储结构及实现

1. 线性表的顺序存储结构 [顺序存储结构定义] 线性表的顺序存储结构,指的是用一段地址连续的存储单元依此存储线性表中的数据元素. [设计思路] 可以用一维数组来实现顺序存储结构的线性表. 1 template <typename T> 2 class SeqList : public List<T> 3 { 4 protected: 5 T *m_array; //顺序存储空间 6 int m_length; //当前线性表长度 7 }; [顺序存储线性表类的组成] DTLib顺

线性表的顺序存储结构

1.顺序表: 线性表占用的存储空间=n*sizeof(ElemType) n为线性表的长度,ElemType为线性表的元素类型,sizeof(ElemType)为每个元素所占存储空间大小(即字节数) 线性表的顺序存储结构利用数组实现,数组的基本类型是线性表中元素类型,数组大小大于等于线性表的长度. 基本运算实现: (1)建立顺序表 void CreateList(SqList *&L,ElemType a[],int n)    //由a中的n个元素建立顺序表 {  int i;    L=(S