文章目录
一,线性表的定义
线性表:零个或多个数据元素的有限序列。
注意:元素之间有顺序,并且是有限的。
如图
线性表元素的个数 n( n >= 0 ) 定义为线性表的长度,当 n = 0 时,称为空表。 i 为数据元素 ai 在线性表中的位序。
在复杂的线性表中,一个数据元素可以由若干个数据项组成
二,线性表的顺序存储结构
1.定义
线性表的顺序存储结构:用一段地址连续的存储单元依次存储线性表的数据元素。
如图
2.属性
可以用C语言的一维数组来实现顺序存储结构。
线性表的顺序存储结构代码:
#define MAXSIZE 20
typedef int ElemType;
typedef struct
{
ElemType data[MAXSIZE];
int length;
}SqList;
在此补充一下typedef的用法
typedef的4种用法
(1) 为基本数据类型定义新的类型名;
(2) 为自定义数据类型(结构体、共用体和枚举类型)定义简洁的类型名称;
以结构体为例,下面我们定义一个名为 Point 的结构体:
struct Point
{
double x;
double y;
double z;
};
在调用这个结构体时,我们必须像下面的代码这样来调用这个结构体:
struct Point oPoint1={100,100,0};
struct Point oPoint2;
在这里,结构体 struct Point 为新的数据类型,在定义变量的时候均要向上面的调用方法一样有保留字 struct,而不能像 int 和 double 那样直接使用 Point 来定义变量。现在,我们利用 typedef 定义这个结构体,如下面的代码所示:
typedef struct tagPoint
{
double x;
double y;
double z;
} Point;
在上面的代码中,实际上完成了两个操作:
1、定义了一个新的结构类型,代码如下所示:
struct tagPoint
{
double x;
double y;
double z;
} ;
其中,struct 关键字和 tagPoint 一起构成了这个结构类型,无论是否存在 typedef 关键字,这个结构都存在。
2、使用 typedef 为这个新的结构起了一个别名,叫 Point,即:
typedef struct tagPoint Point
因此,现在你就可以像 int 和 double 那样直接使用 Point 定义变量,如下面的代码所示:
Point oPoint1={100,100,0};
Point oPoint2;
(3) 为数组定义简洁的类型名称
它的定义方法很简单,与为基本数据类型定义新的别名方法一样,示例代码如下所示:
typedef int INT_ARRAY_100[100];
INT_ARRAY_100 arr;
(4) 为指针定义简洁的名称
顺序存储结构的三个属性:
(1)存储空间的起始位置:数组 data;
(2&