数据结构小结PPT课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

n
Fact(n
1)
若n 0
• 2阶Fibonaci数列:
1
若n 1
Fib(n) 1
若n 2
Fib(n 1) Fib(n 2) 其它
东华理工大学信工学院
2021年3月19日
分治法求解递归问题算法的一般形式:
voຫໍສະໝຸດ Baidud p (参数表) { if (递归结束条件)可直接求解步骤;-----基本项 else p(较小的参数);------归纳项
一般线性表
逻辑结构:一对一 存储结构:顺序表、链表
运算规则:随机、顺序存取

逻辑结构:一对一 存储结构:顺序栈、链栈 运算规则:后进先出
“进” =压入=PUSH () “出” =弹出=POP( )
东华理工大学信工学院
2021年3月19日
1. 递归定义的数学函数:
1
若n 0
• 阶乘函数:
Fact(n)
✓浪费存储空间 ✓属于静态存储形式,数据元素的个数不能自由扩

为克服这一缺点
链表
05:47
2.3 栈
1. 定义
只能在表的一端(栈顶)进行插入 和删除运算的线性表
2. 逻辑结构 与线性表相同,仍为一对一关系
3. 存储结构 用顺序栈或链栈存储均可,但以顺 序栈更常见
东华理工大学信工学院
2021年3月19日
时间复杂度和空间复杂度是衡量算法的两个主要指标。
05:47
逻辑结构 唯一
存储结构 不唯一
数据的逻辑结构
线性结构
线性表 栈、队列 串、数组
非线性结构 树形结构 图形结构
运算的实现 依赖于 存储结构
数据的存储结构 顺序存储 链式存储
数据的运算:插入、删除、修改、查找、排序
05:47
• 线性表 • 栈和队列 • 串、数组和广义表
2021年3月19日
(2)在访问线性表时,可以快速地计算出任何一 个数据元素的存储地址。因此可以粗略地认为, 访问每个元素所花时间相等
这种存取元素的方法被称为随机存取法
05:47
顺序表的优缺点 优点:
✓存储密度大(结点本身所占存储量/结点结构所占存储量) ✓可以随机存取表中任一元素
缺点:
✓在插入、删除某一元素时,需要移动大量元素
线性结构
(逻辑、存储 和运算)
线性结构的定义: 若结构是非空有限集,则有且仅有一个开始结
点和一个终端结点,并且所有结点都最多只有一个 直接前趋和一个直接后继。
可表示为:(a1 , a2 , ……, an)
05:47
线性结构表达式:(a1 , a2 , ……, an)
线性结构的特点:
① 只有一个首结点和尾结点; ② 除首尾结点外,其他结点只有一个直接前驱和一
}
int Fact ( int n )
{ int m;
if (n= =0) return(1);
else
{ m=n*Fact(n-1);
return(m); }
东华理工大学信工学院
} 2021年3月19日
该问题的算法为:
int Fibona ( int n ) { int m;
if (n= =1) return (1); else if (n= =2) return(1);
3. 熟练掌握循环队列和链队列的进队出队算法 ,特别注意队满和队空的条件
4. 理解递归算法执行过程中栈的状态变化过程
东华理工大学信工学院
2021年3月19日
2.2 顺序表
线性表的顺序表示又称为顺序存储结构或顺序映像。 顺序存储定义:把逻辑上相邻的数据元素存储在物理 上相邻的存储单元中的存储结构。 简言之,逻辑上相邻,物理上也相邻
q (a1, a2,an )
a1 a2 a3 ... an
入队列
队尾 队头
队列是具有“先进先出”(FIFO,First In First Out)特点的线性结构
东华理工大学信工学院
2021年3月19日
出队列
q (a1, a2,an )
a1 a2 a3 ... an
队尾 队头
东华理工大学信工学院
1、数据、数据结构等基本概念 2、数对据数结据构结就构是的指两按个一层定次的的逻理辑解结构组成的一批数据,
第1章 概述 使用• 某逻种辑存结储构结的构四将种这形批式数据存储于计算机中,并在这
些数• 据线上性定和义非了线一性个结运构算的集逻合辑。特征 • 存储结构的两种形式 3、抽象数据类型的表示方法 4、算法的时间和空间复杂性
4.运算规则 只能在栈顶运算,且访问结点时依 照后进先出(LIFO)或先进后出 (FILO)的原则
5.实现方式
关键是编写入栈和出栈函数,具体 实现依顺序栈或链栈的不同而不同
基本操作有入栈、出栈、读栈顶元 素值、建栈、判断栈满、栈空等
东华理工大学信工学院
2021年3月19日
栈与一般线性表的区别
栈是一种特殊的线性表,它只能在表的一端(栈顶) 进行插入和删除运算 栈与一般线性表的区别:仅在于运算规则不同
{ int k;
if (n==0) return(m);
else if (n>m) return(gcd(n,m))
else
{ k=m%n;
return(gcd(n,k));
}
}
2.4 队列
队列是一种先进先出(FIFO) 的线性表. 它只允许在表的 一端进行插入(队尾),而在另一端删除元素(队首)
顺序存储方法:用一组地址连续的存储单元依次存储 线性表的元素,可通过数组a[n]来实现。
05:47
查找、插入、删除算法的平均时间复杂度为 O(n)
显然,顺序表的空间复杂度S(n)=O(1) (没有占用辅助空间)
05:47
顺序表(顺序存储结构)的特点
(1)利用数据元素的存储位置表示线性表中相邻 数据元素之间的前后关系,即线性表的逻辑结构 与存储结构一致
else { m=Fibona(n-1)+ Fibona(n-2);
return (m); }
}
例 试编写一个递归函数,求两个正整数m和n的最大
公约数,其中最大公约数gcd(m,n)的求解公式为:
gcd(n,m)
m<n
gcd(m,n)= m
n=0
gcd( n ,m % n ) 其它情形
int gcd(int m,int n)
个直接后继。
简言之,线性结构反映结点间的逻辑关系是 一对一 的
线性结构包括线性表、堆栈、队列、字符串、数 组等等,其中,最典型、最常用的是
线性表
05:47
1. 掌握栈和队列的特点,并能在相应的应用问 题中正确选用
2. 熟练掌握栈的顺序栈和链栈的进栈出栈算法
,特第别2应章注意线栈性满和表栈及空其的条顺件序存储
相关文档
最新文档