计算机软件技术基础 第二章:数据结构[精选].ppt

计算机软件技术基础 第二章:数据结构[精选].ppt

  1. 1、本文档共201页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构概念的三个方面 数据元素之间的逻辑关系 数据元素在计算机中的存储方式 在这些数据元素上定义的运算的集合。 数据的逻辑结构 数据的逻辑结构有时可直接称为数据结构。 数据的逻辑结构的三种基本类型:线性表、树和图。 逻辑结构分类 两大类: (一)线性结构(线性表) 数据元素之间的逻辑关系可以用一个线性序列简单地表示出来。 线性表是典型的线性结构,它的数据元素只按先后次序联接。 有栈、队列、字串、数组和文件等方式。 (二)非线性结构(树,图) 不满足线性结构特点的数据结构称为非线性结构。 树、图等是非线性结构。 树中的数据元素是分层次的纵向联接。 图中的数据元素则有各种各样复杂联接。 其它种类的数据结构由这三种基本结构派生的。 数据结构运算 插入:在数据结构中的指定位置上插入新的数据元素; 删除:根据一定的条件,将某个结点从数据结构中删除; 更新:更新数据结构中某个指定结点的值; 检索:在给定的数据结构中,找出满足一定条件的结点来,条件可以是某个或几个数据项的值; 排序:根据某一给定的条件,将数据结构中所有的结点重新排列顺序等。 数据结构运算操作分类 加工型操作:操作改变了存储结构的值(如插入、删除、更新等) 引用操作:操作只是查询或求得结点的值(如检索等)。 评价算法 正确性 运算时间 存储空间 线性表 表中的每个元素呈线性关系,除第一个外,都有一个直接前趋(predecessor),除最后一个元素外,都仅有一个后继(successor)。 1.线性表的逻辑结构 线性表L用符号表示为: L=(a1,a2,a3,.. ai...,an) 线性表也可以正式定义为: 若数据结构 L=(D,R)是一个线性表, 则:D是包括a1,a2,a3 .....an 等元素的集合。R中只包含一个关系,即R={ai-1,ai | ai-1,ai∈D, 2≤i≤n }。 关系 ai-1,ai 给出了元素的一种先后次序。a1 称为表的线性起始结点,an 为表的终结点。 2.线性表的存储结构 存储结构:顺序存储结构和链接存储结构。 具有顺序存储结构的线性表称为顺序表 用一组地址连续的存储单元依次存储线性表中的每个数据元素。 具有链接存储结构的线性表称为线性链表。 用一组任意的存储单元来存储线性表中数据元素的,这组存储单元可以是连续的,也可以是不连续的。通常亦称为链表。 常用的链表有单链表、循环链表和双向链表。 3.线性表的基本运算 常用的操作有 插入、删除、修改、读值、检索和排序等。 线性表还可以进行一些更为复杂的操作。 将两个或两个以上的具有相同数据对象的线性表合并成一个线性表, 将一个线性表拆成若干个线性表, 复制一个线性表等等。 C++编写类程序的回顾 建立win32 Console工程 建立类的说明—类的头文件:在工程里添加头文件,定义类 新建CPP程序,编写类的方法代码,包含上面的头文件,实现类的各方法 新建CPP程序,编写主函数,包含类的头文件,调用编写的类,完成程序工作。 类定义 class ClassName { 类变量定义?又称为属性 类构造方法定义,构造方法与类的名字一样 类的其他方法的定义,和函数的定义 }; ?千万不要忘记分号 class List { int length; int *data; int volume; public:List(int n) { length = 0; volume=n; data = new int[n]; } }; 数据结构运算 插入:在数据结构中的指定位置上插入新的数据元素; 删除:根据一定的条件,将某个结点从数据结构中删除; 更新:更新数据结构中某个指定结点的值; 检索:在给定的数据结构中,找出满足一定条件的结点来,条件可以是某个或几个数据项的值; 排序:根据某一给定的条件,将数据结构中所有的结点重新排列顺序等。 线形表类设计 对象的属性: 自己现有的数据:存放在一个数组中 现有数据的个数:长度 能存放多少数据:容量 动作(Method) 构造方法:传递表的容量,创建一个空表,长度=0, 插入:新数据插入后,数据还是有序的,长度增1 增加:在表的尾部增加一个数据,长度增1 查找:根据键值,找到数据在表中的位置,并返回,找不到,返回-1 更新:用指定的值更新表中指定位置的元素的值 排序:将表中元素按从小到大排序。 定义顺序表的类—接口文件ArrayLineList.h #include iostream.h class ArrayLineList { int *data;

文档评论(0)

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

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

1亿VIP精品文档

相关文档