2.1 线性表的顺序表示和实现

线性表的顺序表示是指用一组地址连续的存储单元依次存储线性表的数据元素

设线性表每个元素需占用2.1 线性表的顺序实现 - 图1个存储单元

线性表第i+1个数据元素的存储位置和第i个数据元素存储位置关系是

2.1 线性表的顺序实现 - 图2

线性表第i个数据元素 2.1 线性表的顺序实现 - 图3的存储位置是

2.1 线性表的顺序实现 - 图4

2.1.1 动态数组

数组具有随机存取(即直接访问)的特点,又线性表长度可变,故使用动态数组实现线性表的顺序存储结构

  1. #define LISTINITSIZE 1000 // 线性表存储空间的初始分配量
  2. typedef int Status;
  3. typedef struct Contiguous_List{
  4. ElemType* elem; // 存储空间基址
  5. int length; // 当前线性表长度
  6. int lsize; // 当前分配的存储容量
  7. }SeqList;

2.1.2 线性表的初始化:构造一个空的线性表

伪代码:

  1. def InitList(SeqList& L):
  2. L.elem = new ElemType[LISTINITSIZE]
  3. if !L.elem:
  4. exit(OVERFLOW)
  5. L.length = 0
  6. L.lsize = LISTINITSIZE

2.1.3 线性表的销毁

伪代码:

  1. def DestroyList(SeqList &L):
  2. delete []L.elem
  3. L.elem = nullptr
  4. L.length = 0
  5. L.lsize = 0

2.1.4 线性表的清空

伪代码:

  1. def ClearList(SeqList &L):
  2. L.length = 0

2.1.5 线性表判空

伪代码:

  1. def ListEmpty(L):
  2. return L.length>0 ? 1 : 0

2.1.6 获取线性表长度

伪代码:

  1. def ListLength(L):
  2. return L.length

2.1.7 获取线性表元素

伪代码:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define TRUE 1
  4. #define FALSE 0
  5. #define OK 1
  6. #define ERROR 0
  7. #define INFEASIBLE -1
  8. #define OVERFLOW -2
  9. // Status是函数的类型,其值是函数结果状态代码
  10. typedef int Status;
  11. typedef struct Contiguous_List{
  12. Status* elem;
  13. }SeqList;