从0开始学习数据结构-线性表①

782 阅读2分钟

这是我参与2022首次更文挑战的第11天,活动详情查看:2022首次更文挑战

线性表的定义及基本操作

线性表的定义

线性表是由n(n≥0)个属于同一个数据对象的数据元素a1,a2,..., an组成的有限序列。

n为线性表中包含的数据元素的个数,称为线性表的长度.

空表:长度为0的表,不包含任何数据元素

线性表的特点

从逻辑上看,线性结构的特点是数据元素之间存在着“一对一”的逻辑关系。任何一个线性结构(其数据元素属于同一个数据对象)都可以用线性表形式表示出来。

用标识符A来表示线性表: image.png

线性表的基本操作

image.png

按是否改变线性表的长度来划分,第1、6、8、9、12、13的操作可能会改变线性表的长度

线性表的顺序存储结构

定义

在计算机内部可以采用不同方式存储一个线性表,其中最简单的方式就是用一组地址连续的存储单元来依次存储线性表中的数据元素。这种存储结构称为线性表的顺序存储结构,并称此时的线性表为顺序表

线性表中每个数据元素

  • 具有相同的属性,属于同一个对象
  • 每个元素占用的存储空间大小也相同

设每个元素占k个存储单元,线性表的第i+1个数据元素ai+1的存储位置与第i个数据元素ai的存储位置之间存在关系如下:

image.png

线性表的第i个数据元素ai的存储位置为: image.png

线性表的顺序存储结构是一种随机存储的存储结构。

优点:

  • 存储密度大,空间利用率高
  • 数据元素的位置可以用一个简单直观的解析式算出来
  • 是一种随机存储的结构,存取元素的速度快

缺点

  • 线性表的存储空间需要事先分配,并且需要按最大需要的空间来考虑存储分配,会导致存储空间开销的浪费
  • 一些基本操作的时间效率较低

线性表的顺序存储结构的类型描述

#define MaxSize 1000 // 假设分配的空间大小为1000
ElemType A[MaxSize];
int n;              // 线性表的长度

n:线性表的长度 MaxSize:初始分配给线性表的最大空间数 相应的存储映像如下图:

image.png