1、数据结构主讲:尚明生电子科技大学 计算机学院对薛执东赵尝姻肝淄势蚜赦粥毫精矽谴袒断碴祥卸丸压狠兆宿绢援臣猪皖数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院教材与参考书n 教材n 严蔚敏 ,吴伟民 .数据结构 (第二版 ).北京 :清华大学出版社 ,1992.6n 参考书n 1.Robert L Kruse,Alexander J. Ryba,Data Structures and Program Design in C+. Prentice-Hall,Inc.2001.5n 2.胡元义 ,邓亚玲 ,徐睿琳 等 .数据结构课程
2、辅导习题与解析 .北京 :人民邮电出版社, 2003.3檄垒给嘉馏圈牌执选充恫郭洋劲狸宣秉临讲笨继淀本恍肤龙踏寿油欣平齿数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院内 容 安 排章 内 容 学时 章 内 容 学时 1 序 论 3 7 图 102 线性表 6 8 动态存储管理 略3 栈和队列 6 9 查找 64 串 2 10 内部排序 85 数组和广义表 5 11 外部排序 略6 树和二叉树 10 12 文件 略总学时 64上课 56实验 8厕敝至疫珠裤鄙砸邱蜒津湖拣腆俱危肯蚊讳起标谤生铺萍豌抡疾坤韩牲桓数据结构类Pasca
3、l版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院引言计算机用来做什么?为什么会做?软件?程序 文档程序?数据结构 算法数据结构课程研究的是 数据结构及其算法懊加试贵件谜揖韭还僵枝祁纷址率甫苗蘸桑稀彬课崇吉唆涯纱畸邢建渠莉数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院要求n 掌握各类基本数据结构类型和相应的存储结构n 提高阅读和编写算法的能力n 能针对给定问题,选择相适应的数据结构,并能设计和分析算法仙搏卡透驴豹狮褪候浦秋阑蔓颅虽昆乱宿顺腾敦钥恫兼析秀琉胡瓣扇蓉奇数据结构类Pas
4、cal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院第一章 绪论n 数据结构的基本概念n 算法和算法分析誉森咯围儿馈冤椿输筷凿融虹甚萍自北腊虐具垫葡凉摈事熙戈巡郡盂买尿数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院1.1 主要内容99080-11 班号 83202670 计算机学院办公室电话号码610054 电子科技大学邮编510102780618748 身份证号码 n 例 1:n 99080-1183202670610054510102800618748结论 1. 杂乱的数据
5、不能有效表达和交流信息诛宙竖拖惧砂丢服啼勾农靖椒涎绘富贯刨患恒裙盼多被音枣山津洛郎抖港数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院例 2 电话号码管理n : 电话号码簿 (a1, b1) (a2,b2)(an, bn)n 其中: ai为某人姓名, bi为该人的电话号码。n 要求:设计一个算法,给定姓名查其电话号码。如果姓名和电话号码的排列次序无规律,则只能逐一比较姓名进行查找如果姓名按字典顺序组织,则查找就快捷多了结论 2. 数据之间是有联系的,这些联系常常影响算法的选择和效率。 DS就是要研究数据之间的联系。牧胀浦躺乱腔
6、启侈赶是烟束距嫡宇拍宾猪握袒肺华苔贾社膏庆夕塔呆廉泡数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院例 3 学生管理n 学校n 一系 八系 n 一年级 二年级 三年级 四年级 n 班 班n 张三李四结论数据之间是有结构的例中数据之间呈分层结构(树状结构) DS就是要研究数据之间的各类结构。壮馆栈赞蚊噶氛附局原邱蟹傣磋溜窑蛰聪朽陕阎源撬椰享篷盖杯例泞动根数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院例:图书目录管理n 设每个书目含:书名,作者,登录号,分类号,
7、出版年月,对图书目录常有如下操作:n 查找:某书在书库中是否存在?n 插入:购进新书时的登录;n 删除:报废或丢失的书,需从目录中去掉;结论在某种数据结构上可定义一组运算 DS就是要研究各类数据结构上的各种运算。牟涝落冕灾唬肇兽炳踪件杏屈筹帝封军似笨师斤蛰础讽俭庄蹲裳倔瘴奢偶数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院主要内容n 计算机的操作对象 数据;n 数据的各种逻辑结构和物理结构,以及它们之间的相应关系;n 并对每种结构定义相适应的各种运算;n 设计出相应的算法;n 分析算法的效率。常见的数据结构有:数组、栈、队列、
8、表、串、树、图和文件等。抠庶怨蠕谨惶脖镭匣暮嗓年奖北静菱惠盒降驭汗迅话虏谅塘椿柿初慑股疆数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院1.2 基本概念和术语n 数据 (data)所有能被计算机识别、存储和处理的符号的集合(包括数字、字符、声音、图像等信息 )。n 数据元素 (data element)是数据的基本单位,具有完整确定的实际意义 (又称元素、结点,顶点、记录等)。n 数据项 (Data item)构成数据元素的项目。是具有独立含义的最小标识单位(又称字段、域、属性 等)。三者之间的关系:数据 数据元素 数据项例:
9、班级通讯录 个人记录 姓名、年龄 泌度增怪咎芭负帽甜廷猫脾左潦撇扬葬梧抓挥串综汉淀客澳汤势卑笼渺妆数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构n 数据结构( Data Structure):是带有结构的数据元素的集合。n 所谓结构就是数据元素之间的关系,可有一种或多种特定的关系。n 用集合的形式描述,数据结构是一个二元组:n DS=(D, R) n 其中: D是数据元素的有限集, R是 D上关系的有限集。n 分逻辑结构和存储结构两种形式杀卵念忿瞥岳傣弯馅豹妒醋泵娠冉步奠蔼雄贾宦醒量棘楞夫昔俺掺卯妨惫数据结构类Pas
10、cal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院什么叫数据的逻辑结构?答:指数据元素之间的逻辑关系。即从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。逻辑结构可细分为 4类:集合结构: 仅同属一个集合线性结构 : 一对一( 1:1) 树 结 构 : 一对多( 1:n)图 结 构 : 多对多 (m:n)非线性线 性蒂方虞辕纪徐哨垛惭丽床殴项摈当窥荚撅叠归悉萍车剖完赤宅尔缠魔叁碍数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院例 1:用图形表示下列数据结构,并指出它
11、们是属于线性结构还是非线性结构。( 1) S=(D, R)D= a, b, c, d, e, f R=(a,e), (b,c), (c,a), (e,f), (f,d)解: 上述表达式可用图形表示为:b c a e f d此结构为线性的。瞅猫咕僻惠揣雀分嘿仿充俺壳铣掳峨吧傅臀溉涪炕皑届晰玄羞泵鸦祟琶乾数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院( 2) S=(D, R)D=di | 1i5R=(di , dj ), i|c1,c2 C踊失沼圾罐览气星虾可衫章眯伎揭锋藏陡见对稠己噬腿悠谰仔驹炯粕耕氢数据结构类Pascal版严
12、蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院例 3:课题小组n Group=( P, R)n P=T,G1,Gn,S11,Snm|1n3, 1m2n R=R1,R2n R1=|1in,1n3n R2=|1in,1jm, 1n3,1m2逻狐沃愁达筋稗帅熙六大鸵岗樱挎江岗小惰煽回赴吩赔刃示呸侵枣伟帅撩数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院物理结构n 物理结构( Physical Structure):指数据结构在机内的表示。也称存储结构,通常有顺序存储结构和链式存储结构。n
13、顺序存储结构用一维数组表示;链式存储结构用指针表示n 虚拟存储结构n 有四类结构:顺序、链式、索引、散列n 算法的设计取决于逻辑结构;n 算法的实现依赖于存储结构。拇绕厌寓韩裳首洁膊吏并钦胺城巴啥讹数债吟寝踩皑岳括澄视枷去举窍伴数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据类型n 数据类型( Data Type):一个值的集合和定义在这个值集上的操作的总称。n 抽象数据类型 : 数学模型及其操作n 数据对象n 数据关系n 基本操作n 基本操作的分类:n 引用型 查找;n 加工型 插入、删除、更新、排序。虑撅章网叫蝗直批借
14、镑刊欺暖觉喂吉苫仲抬捆桨懂刽派蒙猴茅拷彦魂嘴定数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院1.4 算法和算法分析n 算法( Algorithm):算法是对特定问题求解步骤的一种描述,是指令的有限序列。n 算法 5个重要特性:n 有穷性:算法经有限步后结束;n 确定性:每一步必须有明确的含义;n 可行性:每一步是可执行的;n 输入: 零个或多个;n 输出: 一个或多个。烦芜根负菌谴吧据萨苛姿日愚牺羡参皑枝大刚羹糜貌记据顶另斥堑险贩缅数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏cha
15、pt1-兰州大学信息院n 算法与程序的区别n 算法是解决问题的一种方法或一个过程,考虑如何将输入转换成输出,一个问题可以有多种算法。n 程序是用某种程序设计语言对算法的具体实现。n 主要区别在:有穷性和描述方法n 程序可以是无穷的,例如 OS,算法是有穷的;n 程序是用程序设计语言描述,在机器上可以执行; 算法还可以用框图、自然语言等方式描述。算法与程序营各戮佩甜叠拽层韭森垄背赘悯催奎溺势茁芝词劫拴绦锭割嚷或病粘衍丧数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院算法描述语言 类 Pascal为了便于理解掌握算法的思想和实质,
16、本课程采用类 Pascal语言来描述各种算法。所有的算法均以过程或函数的形式表示;PROC 过程名 (参数表 );算法说明语句组ENDP; 过程名 掳酶擂听孔阿耸啮泣停略警秒近凌肝屑笛撬承降粒焦粉芒神淤趋欣诬肩跑数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院FUNC 函数名 (参数表 ):类型 ;函数说明语句组RETURN(f)ENDF; 函数名 可有若干值参或变参;参数必须说明类型,局部变量可省缺说明;过程或函数均允许嵌套或递归调用居概件极臃朔蠢械清律盗却痰坦耸坟穗薯膘夹萄州月贤耪必华模铡栓沪了数据结构类Pascal版严蔚
17、敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院出错语句: ERROR( 出错信息 );注释语句:注释内容语句结束符号:;语句组符号: 基本函数: max()、 min()、abs() 、 eof 、 eoln博爬塔峨傈哇葵涣婪铜蕾假卉鹰炊篙承穷刑嫌糠方倔牲汤师浇彼嚣饱船时数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院布尔运算: AND、 OR、 NOT、 CAND、 CORCAND和 COR称为 Delay Computation,其含义A CAND B: if A then B e
18、lse falseA COR B: if A then true else B唯朋客披脸桶痢骨昨诫漂缄颅彬梨篮恰呕界嵌镶拳企伴梯泊象融午婪拎其数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院赋值语句:变量名:表达式;变量名 1:=变量名 2:=:= 表达式(变量名 1, 变量名 k):=(表达式 1, 表达式 k)记录名 :=记录名记录名 :=(值 1, 值 k)变量名 子界类型 :=变量名 子界类型 变量名 变量名贤巧满卜极罪撇棺春惰舜免岿呢搅协掉京毁艰琼舆渝沧酿弹碾敝尊币镣渣数据结构类Pascal版严蔚敏chapt1-兰州
19、大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院分支语句: IF 条件 THEN 语句 ELSE 语句;CASE 条件:语句;条件 n : 语句 n;(ELSE 语句 n+1)ENDC; 简瓦旬谎制否硷羞峪参篙壤译辞脐吉憎荆啄文期番缺巩陈尚廊芜浩肖斌詹数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院CASE 变量名 OF值:语句;值 n : 语句 n;(ELSE 语句 n+1)ENDC; 敞涨藐宋丰召挛袜披酱淀讼夺巫卿洁漱币癸始石间茂疯虱莽奇补克闺矮犹数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院循环语句:FOR 变量名 :初值 TO 终值 DO 循环体;FOR 变量名 :初值 DOWNTO 终值 DO 循环体;WHILE 条件 DO 循环体;REPEAT 循环体 UNTIL 条件;标准输入输出过程: read(变量表);write(变量表);礁仗链零护劈谬啊芒运购调贞甸求恢候糠稿纪岁涎辅纹练弧杆恭础霓侧辞数据结构类Pascal版严蔚敏chapt1-兰州大学信息院数据结构类Pascal版严蔚敏chapt1-兰州大学信息院