c语言数据结构基础课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《c语言数据结构基础课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 数据结构 基础 课件
- 资源描述:
-
1、1/6/202311065865姓名姓名 学号学号 成绩成绩 班级班级 李红李红 9761059 95 机机97.6 ABCDEFG1/6/20232第十三章第十三章 数据结构基础数据结构基础加油啊!本章主要内容:数据结构基本概念 数据结构常用算法1/6/20233 13.1.1 概述概述 13.1.1 数据结构的基本概念 程序=数据结构+算法(著名的计算机科学家wirth(沃思)提出的表达程序设计实质的公式)例例1:书目自动检索系统登录号:书名:作者名:分类号:出版单位:出版时间:价格:书目卡片001高等数学樊映川S01002理论力学罗远祥L01003高等数学华罗庚S01004线性代数栾汝书
2、S02书目文件按书名按作者名按分类号高等数学001,003理论力学002,.线性代数004,.樊映川001,华罗庚002,.栾汝书004,.L002,S001,003,索引表用计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题抽象出一个适当的数学模型;然后设计一个解此数学模型的算法;最后采用一种计算机语言编出程序,调试、修改直至得到最终答案。线性表1/6/20234例例 1:1:英文26个字母表的数据结构是一个线形表,可表示为:B=D,R D=a,b,c,,x,y,z R=(a,b),(b,c),,(y,z)此例数据元素是简单项。学号学号姓名姓名成绩成绩98611099861
3、109张卓张卓10010098611079861107刘忠赏刘忠赏959598611039861103胡孝臣胡孝臣8686例例 2:2:学生成绩表(复杂的线性表)数据元素是由若干个数据项组成,如每个学生的情况,称为记录(Record);由多个记录组成的线性表称为文件(File).1/6/20235树形结构例子结点间具有分层次的连接关系HBCDEFGAHGFECDBA例2 计算机中的目录结构问题树1/6/202361423 D=1,2,3,4 R=(1,2),(1,3),(1,4),(2,3)(3,4),(2,4)213 D=1,2,3 R=,图形结构例子图形结构例子结点间的连结是任意的结点间的
4、连结是任意的例3 交通、道路问题的数学模型图1/6/20237数据结构定义:1/6/202381.概念与术语:数据(data)所有能输入到计算机中去的描述客观事物的符号数据元素(data element)数据的基本单位,也称节点(node)或记录(record)数据项(data item)有独立含义的数据最小单位,也称域(field)数据结构(data structure)数据元素和数据元素关系的集合.1/6/20239 2.2.数据结构研究的三个问题数据结构研究的三个问题(1 1)数据的逻辑结构:)数据的逻辑结构:反映数据之间的逻辑关系。反映数据之间的逻辑关系。三种基本结构三种基本结构:线性
5、结构线性结构:结构中的数据元素存在着线性结构中的数据元素存在着线性(一对一一对一)的关系的关系.树形结构树形结构:结构中的数据元素存在着层次结构中的数据元素存在着层次(一对多一对多)的关系的关系.图形结构图形结构:结构中的数据元素存在着任意结构中的数据元素存在着任意(多对多多对多)的关系的关系.任何数据结构在逻辑上可描述为任何数据结构在逻辑上可描述为 Group=Group=(D D,R R)其中:其中:D D是数据元素的集合,是数据元素的集合,R R是是D D上的关系集合。上的关系集合。(2 2)数据的存储结构:)数据的存储结构:数据在计算机内部的存储方式。数据在计算机内部的存储方式。(3
6、3)数据的操作:)数据的操作:数据的操作即是对数据进行的处理。数据的操作即是对数据进行的处理。1/6/2023101.数据的逻辑结构数据的逻辑结构 2.数据的存储结构数据的存储结构 3.数据的运算:检索、排序、插入、删除、修改等。数据的运算:检索、排序、插入、删除、修改等。A.线性结构线性结构 B.非线性结构非线性结构A.顺序存储顺序存储 B.链式存储链式存储 线性表线性表栈栈队队树形结构树形结构图形结构图形结构数据结构的三个方面数据结构的三个方面反映数据元素反映数据元素之间的逻辑关之间的逻辑关系系数据元素在计算机数据元素在计算机内部的组织方式内部的组织方式1/6/202311元素元素n n.
7、元素元素i i.元素元素2 2元素元素1 1LoLo+mLo+(i-1)*mLo+(n-1)*m存储地址存储地址存储内容存储内容Loc(元素元素i)=Lo+(i-1)*m顺顺序序存存储储把线性表中数据元素依次存放到一把线性表中数据元素依次存放到一组连续的存储单元中。组连续的存储单元中。1/6/2023121536元素元素2 21400元素元素1 11346元素元素3 3元素元素4 41345存储地址存储地址 存储内容存储内容 指针指针 1345 1345 元素元素1 1 14001400 1346 1346 元素元素4 4 .14001400 元素元素2 2 1536 1536 .1536 1
8、536 元素元素3 3 1346 1346 链式存储链式存储 h1/6/20231313.1.2 13.1.2 算法的基本概念算法的基本概念 1.算法算法(algorithm)是对特定问题求解步骤的一种描述。是对特定问题求解步骤的一种描述。算法的五个特性:有穷性:一个算法必须在执行有穷步之后结束。确定性:算法的每一步必须是确切定义的。对于相同输入必须得到相同结果。可行性:算法的每一步都是能够实现的,即可操作的。输 入:算法有零个或多个输入。有输出:算法执行完毕,必须有一个或若干个输出结果。2.“好”算法应达到的目标正确性:对于一切合法输入都能产生满足规格要求的结果。易读性:算法要便于阅读,有助
9、于人们对算法的理解。健壮性:当输入非法数据时,也能正常作出反应和处理。执行时间及占用空间:对相同规模的问题,执行时间短、占用空间少。1/6/202314 算法的时间复杂度算法的时间复杂度:为便于比较解决同一问题的不同算法,通常以算法中基本操作重复执行的频度作为算法的时间度量标准。记作:T(n)=O(f(n)T(n)是问题规模的函数,O表示数量级 随问题规模随问题规模n n的增大,算法执行时间的增长率的增大,算法执行时间的增长率T(n)T(n)和和f(n)f(n)的增长率相同。简称时间复杂度。应选择算法内重复的增长率相同。简称时间复杂度。应选择算法内重复执行次数最多的基本语句,作为算法执行时间量
10、度。一般执行次数最多的基本语句,作为算法执行时间量度。一般情况下是情况下是最深层循环内的基本语句最深层循环内的基本语句。1/6/202315例例1:x+=5;单个语句的频度为单个语句的频度为1,则,则程序段的时间复杂度为程序段的时间复杂度为T(n)=O(1)例例2:两个:两个nn阶矩阵相乘阶矩阵相乘算法中语句的执行次数算法中语句的执行次数for(i=0;in;i+)nfor(j=0;jn;j+)cij=0;for(k=0;kn;k+)cij=cij+aik*bkj;T(n)=2n3+2n2+n=O(2n3+2n2+n),,Tn=On3即算法的执行时间与问题规模即算法的执行时间与问题规模N的三次
11、方同阶。的三次方同阶。一般情况下,随一般情况下,随n的增大,的增大,T(n)的增长较慢的算法为最优的增长较慢的算法为最优算法。算法。1/6/202316算法的空间复杂度:算法的空间复杂度:算法执行时存储空间需求的度量算法执行时存储空间需求的度量S(n)=O(f(n)通常只要分析算法在实现时所需的辅助空间单元个通常只要分析算法在实现时所需的辅助空间单元个数即可。数即可。算法的时间的耗费和所占存储空间的耗费是矛盾的,算法的时间的耗费和所占存储空间的耗费是矛盾的,难以兼得。难以兼得。一般情况,常常以算法的执行时间作为算法优劣的一般情况,常常以算法的执行时间作为算法优劣的主要衡量指标。主要衡量指标。1
12、/6/2023171313.2.2 线性表(线性表(Linear_List)Linear_List)13.2.1 13.2.1 线性表的定义线性表的定义 线性表是n个元素的有限序列,是最常用最简单的数据结构,长度可增长或缩短。它们之间的关系可以排成一个线性序列:a1,a2,.,ai,.,an线性结构特点:在数据元素的非空有限集中存在唯一的一个被称作“第一个”的数据元素存在唯一的一个被称作“最后一个”的数据元素除第一个外,集合中的每个数据元素均只有一个前驱除最后一个外,集合中的每个数据元素均只有一个后继在线性表上常用的运算有:初始化、求长度、取元素、定位、插入及删除等。1/6/20231813.
13、2.2 线性表的存储结构及其运算1.线性表的顺序存储结构特点:把线性表中数据元素依次存放到一组连续的存储单元中,每个数据元素对应一个存储单元。线性表中数据元素类型一致,占用相同大小的存储单元。存储空间利用率高。做插入、删除时需移动大量元素。空间估计不明时,按最大空间分配。1/6/202319元素元素n n.元素元素i i.元素元素2 2元素元素1 1LoLo+mLo+(i-1)*mLo+(n-1)*m存储地址存储地址内存状态内存状态Loc(元素元素i)=Lo+(i-1)*m顺序存储结构示意图:顺序存储结构示意图:1/6/202320元素元素1 1元素元素2 2.元素元素i i.01i 线性表的
14、顺序存储结构线性表的顺序存储结构可用可用C C语言中的一维数组来描述语言中的一维数组来描述.#define M 100 /*定义M为常数100,M的值作为数组的最大容量*/。int VM;/*V是数组的名字,假设数组中的元素是整型类型*/第i个元素的ai存储地址:Loc(ai)=Loc(a1)+(i-1)*mVVViVm-11/6/202321.a2a1an.ai+1ai01i-1in-1(1 1)顺序表的插入运算)顺序表的插入运算 在线性表的第在线性表的第i i个元素之前插入一个新的元素,先移个元素之前插入一个新的元素,先移动,后插入。动,后插入。ai-1.a2a1alengthai+1ai
15、 xai-1.a2a1 aiai+1alength alength ai+1ai x1/6/202322 顺序表的插入算法:顺序表的插入算法:int insq(int i,int x,int V,int M,int*p)/*在线性表V中第i 个元素之前插入x,i 的合法值为 1 i n */int n,j;n=*p;/*获取表长*/if(n=M)/*M是存储空间的大小,p 是指向存储表长的指针变量*/printf(overflow n);return(0);if(in+1)printf(i is error n);return(0);/*i值不合法*/else for(j=n;j=i;j-)V
16、j=Vj-1;/*插入位置后的元素依次右移*/Vj=x;/*插入x*/p=+n;/*表长加1,由p返回到函数调用处*/return(1);1/6/202323void main()int M=10,n=4;/*M是数组的大小,n是表中元素个数,即表长*/int result,k;static int V10=3,5,7,10;/*数组赋初值*/result=insq(2,4,V,M,&n);/*执行函数调用,在第2个元素前插入4*/if(result=1)printf(success!n);for(k=0;kn;k+)printf(%d,Vk);else printf(failure!);运行
17、结果运行结果:success!3 4 5 7 101/6/202324(2 2)顺序表的删除运算)顺序表的删除运算int delsq(int i,int V,int*p)/*在线性表V中删除第i 个元素*/int n,j;n=*p;if(in)printf(This element is not in the list n);return(0);else for(j=i;jdata表示p指向结点的数据域(*p).linkp-link表示p指向结点的指针域datalink生成一个NODE型新结点:p=(NODE*)malloc(sizeof(NODE);系统回收p结点:free(p)结点中只含一
展开阅读全文