北京理工大学数据结构课件2.2线性表-顺序表.pptVIP

  • 7
  • 0
  • 约5.25千字
  • 约 27页
  • 2017-05-30 发布于北京
  • 举报

北京理工大学数据结构课件2.2线性表-顺序表.ppt

BIT GaoChunXiao Notes of Data Structure * 第二章 线性表 1 2 3 4 5 6 7 8 9 * 本章内容 2.1 线性表的类型定义 2.2 线性表类型的实现 ? 顺序映象 2.3 线性表类型的实现 ? 链式映象 * 2.2.1 顺序表示及其特点 2.2.2 数据结构定义 2.2.3 顺序表的初始化操作 2.2.4 顺序表的插入操作 2.2.5 顺序表的删除操作 2.2.6 用顺序表实现合并操作LC=LA + LB * 2.2.1 顺序表示及其特点 顺序映象—— 以 x 的存储位置和 y 的存储位置之间某种关系表示逻辑关系x, y。 最简单的一种顺序映象方法是: 用一组地址连续的存储单元依次存放线性表中的数据元素。 a1 a2 … ai-1 ai … an 线性表的起始地址 称作线性表的基地址 * 2.2.1 顺序表示及其特点 以“存储位置相邻”表示有序对ai-1,ai 即:LOC(ai) = LOC(ai-1) + C C是一个数据元素所占存储量 所有数据元素的存储位置均取决于第一个数据元素的存储位置 LOC(ai) = LOC(a1) + (i-1)×C 小结:顺序表的特点 用连续的存储单元存放线性表的元素(采用一维数组存放)。 元素存储顺序与元素的逻辑顺序一致。 读写元素方便 ,通过下标即可指定位置。 * a1 a2 … ai-1 ai … an 线性表的起始地址 称作线性表的基地址 * 2.2.2 顺序表数据结构定义 #define LIST_INIT_SIZE 80 // 线性表存储空间的初始分配量 #define LISTINCREMENT 10 // 线性表存储空间的分配增量 typedef struct { ElemType *elem; // 存储空间基址 int length; // 当前长度 int listsize; // 当前分配的存储容量 // (以sizeof(ElemType)为单位) } SqList; // 俗称顺序表 * 0 1 …. i-2 i-1 …. n-1 …… 顺序表 a1 a2 … ai-1 ai … an ... L.elem+L. length-1 L.elem+L. listsize-1 elem length listsize L 注意:由于数组的下标从“0”开始,表中第 i 个元素是 L.elem[i - 1]. typedef struct { ElemType *elem; int length; int listsize; } SqList; // 顺序表 SqList L; * 2.2.3 顺序表的初始化操作 Status InitList_Sq( SqList L ) { // 构造一个空的线性表 L.elem = (ElemType*) malloc (LIST_INIT_SIZE ? sizeof (ElemType)); if (!L.elem) exit(OVERFLOW); L.length = 0; L.listsize = LIST_INIT_SIZE; return OK; } // InitList_Sq typedef struct { ElemType *elem; int length; int listsize; } SqList; // 顺序表 * 2.2.4 顺序表的插入操作 ListInsert(L, i, e) // 插入元素 在顺序表L的第 i 个元素之前插入新的元素e, 把e插入到第 i 个元素的位置 i 的合法范围为 1≤i≤L.length+1 0 1 …. i-2 i-1

文档评论(0)

1亿VIP精品文档

相关文档