线性表的顺序存储结构及实现

线性表的顺序存储结构定义

一、线性表的介绍

线性表是最基本、最简单、也是最常用的一种数据结构。
线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的(注意,这句话只适用大部分线性表,而不是全部。比如,循环链表逻辑层次上也是一种线性表(存储层次上属于链式存储),但是把最后一个数据元素的尾指针指向了首位结点)。

二、什么是顺序表?

1 :线性表的顺序存储称为顺序表(sequential list),其基本思zhunc想是用一段地址连续存储单元的存循单元依次存储线性表的数据元素,则第,如图1所示。设顺序表的每个元素占用c个存储单位,则第i个元素存储地址为:
LOC(ai)=LOC(a1)+(i-1)*c

LOC(ai)=LOC(a1)+(i-1)*c

在这里插入图片描述

                          图1  顺序表中元素ai的存储地址

2: 容易看出,顺序表中数据元素的存储地址是其序号的线性函数,只要确定了存储顺序表的的起始地(即基地址),计算任意一个元素的存储地址的时间是相等的,具有这一特点存储结构称为随机存取结构。

三、数组的长度和线性表的长度

1: 通常用一维数组来实现顺序表,也就是把线性表中相邻的元素存储在数组中相邻的位置,从而导致了数据元素的序号和在放它的数组下标之间具有一一对应关系,如图2所示。需要强调的是,C语言中数组的下标是从0开始的,而线性表中元素的序号是从1开始的,也就是说,线性表中第i个元素存储在数组中下标为i-1的位置.

2: 数组需要分配固定长度的数组空间,因此,必须确定存放线性表的数组空间的长度。因为在线性表中可以进行插入操作,则数组的长度就要大于当前线性表的长度。用MaxSize表示数组的长度,用length
表示线性表的长度,如图2所示。

                         图2  数组的长度和线性表的长度具有不同含义

下面给出顺序表的存储结构定义:

#define MaxSize 100    //假设顺序表最多存放100个元素
typedef int Datarype; //定义线性表的数据类型,假设为int型
typedef struct
{
    
    
 Datarype data[Maxsize]; //存放数据元素的数组
 int length;             //线性表的长度
 }SeqList;               //顺序表类型

猜你喜欢

转载自blog.csdn.net/qq_45848361/article/details/109874195