线性表的顺序存储
用顺序存储实现的线性表称为顺序表,一般使用数组来表示顺序表。
顺序表的类型定义
// 假定数据元素类型为 DataType
typedef struct
{
int num; // 学号
char name[8]; // 姓名
char sex[2]; // 性别
int age; // 年龄
int score; // 入学成绩
} DataType;
// 顺序表的类型定义
const int Maxsize = 100; // 预先定义数组大小
typedef struct
{
DataType data[Maxsize]; // 存放数据的数组
int length; // 顺序表的实际长度
} SeqList;
SeqList L; // L 为顺序表的名称
顺序表的插入
void InsertSeqList(SeqList L, DataType x, int i)
{
// 将元素 x 插入到顺序表 L 的第 i 个数据元素之前
if (L.length == Maxsize) exit('表已满');
if (i < 1 || i > L.length + 1) exit('非法位置');
for (int j=L.length; j>=i; j--)
L.data[j] = L.data[j-1]; // 依次后移
L.data[i-1] = x; // 元素 x 插入到下标为 i-1 的位置
L.length++; // 表长度加 1
}
顺序表的删除
void DeleteSeqList(SeqList L, int i)
{
// 删除顺序表 L 中的第 i 个数据结点
if (i < 1 || i > L.length)
exit('非法位置');
for (int j=i; j<L.length; j++) // 第 i 个元素的下标为 i-1
L.data[j-1] = L.data[j]; // 依次左移
L.length--; // 表长度减 1
}