线性表的顺序存储

用顺序存储实现的线性表称为顺序表,一般使用数组来表示顺序表。

顺序表的类型定义

// 假定数据元素类型为 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 
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *