DS02_线性表.ppt

  1. 1、本文档共67页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DS02_线性表

* 为每一个包含虚函数的类设置一个虚表(VTABLE) base base::f3( ) base::f2( ) base::f1( ) derived base::f3( ) derived::f2( ) base::f1( ) b VPTR d VPTR int i int i int j bp-f2( ); 编译成汇编码为: push si //存放this指针 mov bx, word ptr[si] call word ptr[bx+4] add sp, 4 //退栈 初始化虚指针(VPTR) 为虚函数调用插入代码堆栈 均匀性:虽然不同线性表的数据元素可以是各种各样的,但对于同一线性表的各数据元素必定具有相同的数据类型和长度 有序性:各数据元素在线性表中都有自己的位置,且数据元素之间的相对位置是线性的 线性表: 由称为元素(element)的数据项组成的一种有限且有序的序列,这些元素也可称为结点或表目 二元组(K , r) : 由结点集K,以及定义在结点集K上的线性关系 r 所组成的线性结构 线性表所包含的结点个数称为线性表的长度,它是线性表的一个重要参数;长度为0的线性表称为空表; 线性表的关系 r,简称前驱/后继关系,具有反对称性和传递性 主要属性包括: 线性表的长度 表头(head) 表尾 (tail) 当前位置(current position) 定长的顺序存储结构(顺序表) 按索引值从小到大存放在一片相邻的连续区域 紧凑结构,存储密度为1 变长的线性表存储结构(链表) 单链表 双链表 循环链表 ……….. 创建线性表的一个实例list(-) 清除线性表(即析构函数)~list() 获取有关当前线性表的信息 (读操作) 给定位置找元素 给定元素找位置 访问线性表并改变线性表的内容或结构(写操作) 线性表的辅助性管理操作 求表长 统计计算 …… 线性表的概念 顺序表 链表 线性表实现方法的比较 采用定长的一维数组存储结构 也称向量 主要特性: 元素的类型相同 元素顺序地存储在连续存储空间中, 每一个元素有唯一的索引值 使用常数作为向量长度 数组存储 读写其元素很方便 ,通过下标即可指定位置 只要确定了首地址,线性表中任意数据元素都可以随机存取。地址计算如下所示: loc(ki) = loc(k0) + c* i c = sizeof(ELEM) 逻辑地址(下标) 数据元素 存储地址 数据元素 0 k0 Loc(k0) k0 1 k1 Loc(k0)+c k1 … … … … i ki Loc(k0)+i*c ki … … n-1 kn-1 Loc(k0)+(n-1)*c kn-1 template class T class arrList : public ListT { // 顺序表,向量 private: // 线性表的取值类型和取值空间 T *aList ; // 私有变量,存储顺序表的实例 int maxSize; // 私有变量,顺序表实例的最大长度 int curLen; // 私有变量,顺序表实例的当前长度 int position; // 私有变量,当前处理位置 public: // 顺序表的运算集 arrList(const int size) { // 创建一个新的顺序表,参数为表实例的最大长度 maxSize = size; aList = new T[maxSize]; curLen = position = 0; } ~arrList() { // 析构函数,用于消除该表实例 delete [] aList; } void clear() { // 将顺序表存储的内容清除,成为空表 delete [] aList; curLen = position = 0; aList = new T[maxSize]; }} int length(); // 返回此顺序表的当前实际长度 bool append(const T value); // 在表尾添加一个元素value,表的长度增1 bool insert(const int p, const T value); // 在位置p上插入一个元素value,表的长度增1 bool delete(const int p); // 删除位置p上的元素,表的长度减 1 bool setValue(const int p, const T value); // 用value修

文档评论(0)

mv2323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档