数据结构第1~4章.ppt

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

021052班《数据结构基础》课程上机安排 2012.4.6 下午2:00~6:00 E207 2012.5.18 下午2:30~6:30 E207 2012.6.1 下午2:30~6:30 E207 数据结构基础 西安电子科技大学 智能信息处理研究所 学习指导信息 本课程的教学目的和要求 主要内容 一、数据结构概述 1.1 数据结构的基本概念和术语 数据类型:确定了一个值域以及对该类型数据可以进行的操作。按“值”是否可分解,可以将数据类型划分为两类: 数据的逻辑结构分为两大类: 数据的存储结构可以有以下四种基本的存储方法 : (4)散列存储方法。根据结点的关键字直接计算出该结点的存储地址。 总体说来,数据结构可定义为:按某种逻辑关系组织起来的一批数据,按一定的映射方式把它们存放在计算机的存储器中,并且在这些数据上定义一个运算的集合。 数据结构与算法之间存在着本质联系。在某一类型数据结构上,总要涉及其上施加的运算,而只有通过对运算的研究,才能清楚地理解数据结构的定义与作用;在涉及运算时,总要联系到该算法处理的对象和结果的数据。 N.Wirth(沃思,瑞典)数据结构+算法=程序 2.2 算法的描述和分析 算法性能的评价标准: 2. 算法的时间特性 【例2.2】求两个n阶方阵的乘积C=A×B,其算法如下: 该算法中所有语句的频度之和为: 【例2.3】交换a和b的值。 【例2.4】判断n是否为素数。 【例2.5】变量计数。 3. 算法的空间特性 第2章作业 名词解释:全部 填空题:全部 问答题:全部 二、线性表 2.1 线性表的逻辑结构 线性表的基本运算: 说明: 【例3.1】将线性表A按元素值奇、偶数拆分成两个表,A表存放奇数,B表存放偶数。 【例3.1】算法分析(1) 【例3.1】算法分析(2) 【例3.1】算法分析(3) 【例3.1】算法分析(4) 【例3.1】算法分析(5) 【例3.1】算法分析(6) 【例】求A = A ∪ B,即将存在于B中,而不存在于A中的元素插入到A中。 【例】已知线性表A、B中元素值递增排列,要求将A、B按递增顺序归并为一个新的线性表C。 【例】算法分析(1) 【例】算法分析(2) 【例】算法分析(3) 【例】算法分析(4) 【例】算法分析(5) 【例】算法分析(6) 【例】算法分析(7) 2.2 线性表的顺序存储结构(顺序表) 说明: 顺序表的结构类型定义: 顺序表上实现的基本运算 通过函数返回值将结果带回到主调函数。 用双重指针建立顺序表 函数原型 void InitList(sequenlist** L ) //分配顺序表的动态存储空间,将表的长度置为0 { *L=(sequenlist*) malloc(sizeof(sequenlist)); (*L)- last=0; }//时间复杂度为O(1) 主调函数 void main() { sequenlist *L1; InitList(L1); …… } (2)线性表的第i(1≤i≤n+1)个位置上(第i个结点之前)插入一个新结点 顺序表插入结点的过程 在等概率下插入一个结点,平均移动一半元素 (3)删除顺序表中的第i(1≤i≤n)个结点 顺序表删除结点的过程 在等概率下删除一个结点,平均移动一半元素 (4)定位(按值查找) 【例】编写算法,实现顺序表就地逆置。 若L-last=7 循环变量i取值:1, 2, 3, 4(当i值为4时结束循环) 顺序表就地逆置的算法 顺序表应用实例:在顺序表中删除所有值为x的结点。 程序中所含内容依次如下: (1)文件包含命令:包含程序中所需要的系统头文件; (2)无参宏定义:作为顺序表空间的长度; (3)类型定义:自定义类型名和结构体类型定义; (4)函数声明:说明函数的类型、函数名、函数的参数类型和参数的个数; (5)主函数(main函数)的定义; (6)6个函数的定义。 完整的C程序见教材P75。 顺序表的优缺点 2.3 线性表的链式存储结构(链表) 单链表的示意图 单链表结点的结构体类型定义 术语 使用头结点的优点 1. 建立单链表 算法分析(建立空表) 算法分析(在表头插入结点) (2)带头结点的尾插法建表 (3)不带头结点的尾插法 2. 单链表的查找 (2)按值查找。必须从表头开始顺序查找值为key的结点。 3. 单链表的插入 【例3.2】将值为x的节点插入到递增有序的单链表中 例3.2的算法 4. 单链表的删除 删除结点*p,先顺序查找*p的直接前趋结点*q,然后删除*p。 【例】将两个非递减单链表La、Lb合并为一个非递减的单链表。 【例】将具有头结点的单链表逆置。 分析(执行循环

文档评论(0)

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

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

1亿VIP精品文档

相关文档