网站大量收购独家精品文档,联系QQ:2885784924

上海交通大学数据结构2线性表.ppt

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

第一部分 线性表 具有线性关系的数据集合的处理 包括三部分内容 线性表 栈 队列 第二章 线性表---学习目标 回顾并熟悉C++面向对象的编程方法、C++语法、书写完整程序的技巧。 开始接触并逐步熟悉研究一种数据结构的角度和方法。 掌握顺序结构的基本功 掌握链式操作的基本功 掌握数据结构实现和使用的不同。 掌握最基本且简单的线性结构-线性表结构 第二章 线性表 线性表的概念(逻辑结构) 线性表的存储(物理结构) 线性表类的实现 线性表类的应用 STL中线性表的实现 STL中线性表的应用 线性表的概念 线性表是N个具有相同特征的结点A0, A1, …, AN-1构成的集合。在这个集合中,除了A0 和AN-1 外,每个元素都有唯一的前趋和后继。对于每个Ai,它的前驱是Ai-1,它的后继是Ai+1。A0只有后继没有前驱,AN-1只有前驱没有后继。 表的术语: N为表的大小 A0称为首结点, AN-1称为尾结点 空表:元素个数为零的表。 位置:元素Ai在表中的位置为i 表的基本操作 创建一个线性表create():创建一个空的线性表; 求线性表的长度length():返回线性表的长度; 搜索某个元素在线性表中是否出现search(x):在线性表中搜索x是否出现,并返回x的位置; 访问线性表的第i个元素visit(i):返回线性表中第i个数据元素的值; 在第i个位置插入一个元素insert(i, x):使线性表从(a0,a1,…ai-1,ai, …an-1)变成(a0,a1,…ai-1,x,ai, …an-1),参数i的合法取值范围是0到n; 删除第i个位置的元素remove(i):使线性表从(a0,a1,…ai-1,ai, ai+1 …an-1)变成(a0,a1,…ai-1, ai+1 , …an-1),参数i的合法取值范围是0到n-1; 清除一个线性表clear():删除线性表中的所有数据元素; 表的基本操作 遍历线性表运算traverse():按序访问线性表的每一数据元素。 可以看出基本操作包含了四大类: 构造类:构造出表结构 属性:东瞧西看型,只观察(读)不修改。如某某元素是否在表里,表中一共多少个元素等等。 数据操纵:对数据进行改变,如插入和删除。、 遍历类:每个元素访问且只访问一次。 线性表的抽象类 template class elemType class list { public: virtual int length() const = 0; virtual int search(const elemType x) const = 0 ; virtual elemType visit(int i) const = 0; virtual void insert(int i, const elemType x) = 0; virtual void remove(int i) = 0; virtual void clear() = 0; virtual void traverse() const = 0 virtual ~list() {}; }; 线性表的抽象类 线性表的抽象类是一个类模板 抽象类包括了除create运算以外的所有运算。create运算由每个线性表类的构造函数完成 增加了一个虚析构函数,以防内存泄漏 第二章 线性表 线性表的概念(逻辑结构) 线性表的存储(物理结构) 线性表类的实现 线性表类的应用 STL中线性表的实现 STL中线性表的应用 线性表的实现 线性表的顺序实现 线性表的链接实现 线性表的顺序存储结构 线性表中结点存放在存储器上一块连续的空间中。 借助存储空间的连续性,结点可以按照其逻辑顺序依次存放。 结点存放的物理位置和它的逻辑位置是一致的。 线性表的顺序存储 在程序设计语言中,一块连续的存储空间可以用一个数组实现。由于线性表中的元素个数是动态的,随时可以插入或者删除,因此采用了动态数组。 保存一个动态数组,需要三个变量:指向线性表元素类型的指针,数组规模(容量),数组中的元素个数(表长)。 顺序表类的定义 class OutOfBound{}; class IllegalSize{}; template class elemType class seqList: public listelemType { private: elemType *data; int currentLength; int maxSize; void doubleSpace(); public: seqList(int initSize = 10); /

文档评论(0)

173****7830 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档