- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 常用数据结构及其程序设计 本章主要内容 线性表 栈和队列 二叉树 线性表 线性表的定义和运算 顺序表 链表 线性表的定义 一个线性表是n个数据元素的有限序列。 线性表的运算 插入:在两个确定元素之间插入一个新元素。 删除:删除线性表中某个元素。 查找:按某种要求查找线性表中的一个元素,需 要时可以进行更新。 排序:按给定要求对表中元素重新排序。 顺序表的定义 顺序表:线性表的数据元素用一组地址连续的存储单元依次存储。 顺序表的基本操作 顺序表的创建 顺序表的基本操作 顺序表元素的插入 顺序表的基本操作 顺序表元素的插入 顺序表的基本操作 顺序表元素的删除 顺序表的基本操作 顺序表元素的删除 链表的定义 单链表:线性表的数据元素存储在任意物理位置的存储单元中,通过指针链接保证其逻辑上相邻。 链表的定义 链表结点可以由结构体类型定义。表示学生信息(学号、成绩)的单链表类型定义为: 链表的定义 链表的存储分配 链表的基本操作 链表的建立 链表的基本操作 链表的建立 链表的基本操作 链表的建立 链表的基本操作 链表的输出 链表的基本操作 链表的建立 链表的基本操作 链表的插入 链表的基本操作 例7.6 编写一个insert()函数,完成在单链表的第i个结点后插入一个新结点的操作。当i=0时,表示新结点插入到第一个结点之前,成为链表新的首结点。 链表的基本操作 链表的建立 链表的基本操作 链表的删除 链表的基本操作 链表的建立 栈和队列 栈的定义 栈的基本操作 队列的定义 顺序队列的基本操作 栈的定义 栈是限定仅在表的一端进行插入或删除操作的线性表。允许插入、删除的一端称为栈顶,另一端称为栈底。不含元素的空表称为空栈。 栈的基本操作 例7.7建栈操作函数 栈的基本操作 例7.8入栈函数将数据元素x压入到栈s中,操作成功,返回1,否则为0。 栈的基本操作 例7.9定义一个检查栈是否满的函数,当栈s满时返回1,否则返回0数 栈的基本操作 例7.10出栈函数将栈s中弹出数据元素存入变量x中,操作成功,返回1,否则为0 栈的基本操作 例7.11定义一个检查栈是否空的函数,当栈s空时返回1,否则返回0 队列的定义 队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素。在队列中,允许插入的的一端叫队尾,允许删除的一端则称为队头。 队列的基本操作 例7.12建队列操作函数 栈的基本操作 例7.13入队操作函数,将元素x插入到队列q中,操作成功,返回1,队列满则返回0 队列的基本操作 例7.14判断队列是否满的函数 队列的基本操作 例7.15出队操作函数,从队列q中取出的元素放入变量x,成功,返回1,队列满则返回0 队列的基本操作 例7.16判断队列是否为空的函数 二叉树 树的定义 二叉树的定义 二叉树的链式存储 二叉树的遍历 树的定义 树是一种非线性数据结构,该结构除了起点以外,每个结点只有一个前驱结点,除终点以外,每个结点有一个或多个后继结点。 二叉树的定义 二叉树是度数不超过2的树,也是结构最简单的树。二叉树每个结点最多有两个孩子,根据树中的位置,左边的子结点称为左孩子,右边的子结点称为右孩子。 二叉树的定义 满二叉树:高度为h的二叉树上有2h-1个结点,即每层结点数都达到最大。 完全二叉树:一棵高度为h的二叉树,如果前h-1层是满二叉树,第h层的结点由左至右连续排列。满二叉树也是完全二叉树。 二叉树的链式存储 二叉树的链式存储结构是指用链表来表示一棵二叉树。 二叉树的链式存储 一棵二叉树及其二叉链表: 二叉树的基本操作 例7-17编写程序建立二叉树链表 二叉树的基本操作 二叉树的基本操作 二叉树的基本操作 二叉树的遍历是按照某种次序访问二叉树的所有结点,并且每个结点只访问一次,得到一个有序序列。常用的方法有前根遍历、中根遍历、后根遍历,其定义如下。 二叉树的基本操作 例7-18 用递归算法实现图中二叉树的前根遍历、中根遍历和后根遍历。 二叉树的基本操作 二叉树的基本操作 二叉树的基本操作 小结 int empty_seqstack(SEQSTACK *s) { if (s-top= = 0)return 1; elsereturn 0; } 顺序队列的类型定义如下: #define MAXSIZE 100/*队列的最大容量*/ typedef struct sequeue { Elemtypedata[MAXSIZE];/*队列数据区*/ intrear, front;/*队首队尾指针*/ }SEQUEUE; /*定义一个指向队列的指针变量: */ SEQUEUE *q
您可能关注的文档
- 重庆大学土木工程学院安装原理课件第1章 绪论.ppt
- 重庆大学土木工程学院安装原理课件第2章 设备基础.ppt
- 重庆大学土木工程学院安装原理课件第3章 安装工程精度及分析.ppt
- 重庆大学土木工程学院安装原理课件第4章 设备振动与平衡.ppt
- 重庆大学土木工程学院安装原理课件第5章 静置设备.ppt
- 重庆大学土木工程学院安装原理课件第6章 动荷设备.ppt
- 重庆大学土木工程学院安装原理课件第7章 典型特种设备.ppt
- 重庆大学土木工程学院安装原理课件第8章 钢结构制作与安装.ppt
- 重庆大学土木工程学院安装原理课件第9章 安装工程施工技术方案的编制.ppt
- 重庆大学土木工程学院起重工艺课件 第八章.ppt
- 重庆工商大学程序设计基础(C语言)课件第三章 程序控制结构语句与数组.ppt
- 重庆工商大学程序设计基础(C语言)课件第四章 指针.ppt
- 重庆工商大学程序设计基础(C语言)课件第五章 结构体共用体枚举.ppt
- 重庆工商大学程序设计基础(C语言)课件第一章 概述.ppt
- 重庆工商大学程序设计基础(vfp)课件第八章 报表与标签设计.ppt
- 重庆工商大学程序设计基础(vfp)课件第二章 Visual FoxPro 6.0系统概述.ppt
- 重庆工商大学程序设计基础(vfp)课件第九章 菜单与工具栏设计.ppt
- 重庆工商大学程序设计基础(vfp)课件第六章 结构化与面向对象程序设计基础.ppt
- 重庆工商大学程序设计基础(vfp)课件第七章 表单与控件设计.ppt
- 重庆工商大学程序设计基础(vfp)课件第三章 Visual FoxPro语言基础.ppt
文档评论(0)