没有合适的资源?快使用搜索试试~ 我知道了~
数据结构学位复习课-上海交通大学.pdf
需积分: 26 12 下载量 119 浏览量
2019-05-09
09:09:24
上传
评论
收藏 1.71MB PDF 举报
温馨提示
试读
47页
数据结构学位复习课-上海交通大学 复习课(1) 主要内容: 1.第一部分 基本概念 2.第二部分 线性表、栈、队列 第一部分:数据结构与算法的基本概念 考核内容: 算法、算法正确性、复杂性; 算法的时间与空间复杂性级别; 数据类型、数据结构和表示、实现; 抽象数据类型的说明、高级语言对抽象数据类型的支持 考核要求: 理解算法、算法正确性、复杂性的概念; 了解算法的时间与空间复杂性级别; 重点掌握数据类型、数据结构和表示、实现的概念; 掌握抽象数据类型的说明、高级语言对抽象数据类型的支持。 算法:对特定问题求解步骤的一种描述,是指令的有序序列 算法的五个特性:有穷性、确定性、可行性、输入、输出 算法设计的要求:时间复杂度,空间复杂度
资源推荐
资源详情
资源评论
复习课(1)
主要内容:
1.第一部分 基本概念
2.第二部分 线性表、栈、队列
第一部分:数据结构与算法的基本概念
考核内容:
算法、算法正确性、复杂性;
算法的时间与空间复杂性级别;
数据类型、数据结构和表示、实现;
抽象数据类型的说明、高级语言对抽象数据类型的支持
考核要求:
理解算法、算法正确性、复杂性的概念;
了解算法的时间与空间复杂性级别;
重点掌握数据类型、数据结构和表示、实现的概念;
掌握抽象数据类型的说明、高级语言对抽象数据类型的支持。
算法:对特定问题求解步骤的一种描述,是指令的有序序列
算法的五个特性:有穷性、确定性、可行性、输入、输出
算法设计的要求:时间复杂度,空间复杂度
时间复杂度:算法执行时间随规模增长而增长的趋势
T(n)=O(f(n))
f(n)算法规模,T(n)称算法复杂度
估算办法:以算法中重复执行的次数作
为算法时间复杂度的依据。
三种最常见时间复杂度:
O(1) 常量级 O(n) 线性级
O(n2) 平方级
算法的空间复杂度
S(n)=O(f(n))
算法执行过程中所需的最大空间
估算方法:输入数据所占空间+
程序所占空间+
辅助变量所占空间
基本概念和术语
数据(Data):
数据元素(Data Element):
数据的基本单位,计算机中通常作为一个整体来考虑,如一棵树中的一个结点、一个图中的一个结点。
一个数据元素可以有若干个数据项(Data Item)组成。
数据对象(Data Object):性质相同的数据元素的集合
数据结构:数据元素之间的关系——结构
四种基本结构
集合 线性结构 树形结构 图状结构/网状结构
数据结构的形式定义:
一个二元组:
Data_Structure=(D,S)
其中:D 是数据元素的集合,S 是 D 上的关系集合
数据的逻辑、物理(存储)结构
逻辑结构:数据元素之间的逻辑关系
物理结构:数据元素在计算机中的存储方法(表现和实现)
数据结构的分类:
按照逻辑结构的不同分为:集合、线性结构、树状结构、网状结构
按照物理结构的不同分为:
顺序结构:利用在存储器中的物理关系来表示逻辑关系。
链式结构:用在存储器中附加指针的方式来表示逻辑关系。
第二部分 线性表、栈、队列
考核内容:
顺序分配、链接分配的表示及实现;
各种链表:单链、双链、多链、循环链表;
栈、队列、双向队列的顺序、链式表示及其算法复杂度分析;
表达式计算
考核要求:
熟练掌握顺序分配、链接分配的表示及实现方法;
熟练掌握各种链表:单链、双链、多链、循环链表;
理解栈、队列、双向队列的顺序、链式表示及其算法复杂度分析;
熟练掌握表达式计算原理。
1. 线性表的顺序表示和实现
线性表的存储结构:顺序存储、链接存储
顺序存储:用一组地址连续的存储单元依次存储线性表的数据元素。
顺序表的特点
(1)利用数据元素的存储位置表示线性表中相邻数据元素之间的前后关系,即线性表的逻辑结构于存储结构(物理结
构)一致;
(2)在访问线性表时,可以利用上述给出的数学公式,快速计算任何一个数据元素的存储地址。即访问每个数据元素
所花费的时间相等。
(3)这种存取元素的方法被称为随机存取法。使用这种存取方法的存储结构被称为随机存储结构。
表示方法:
在高级语言中,用一维数组表示:
表示方法:
const LIST_INIT_SIZE=100; //表初始分配空间
const LISTINCREMENT=10;//空间分配增量
typedef struct{ ElemType *elem; //存储空间
int length; //当前长度
int listsize; //当前存储容量
int LISTINCREMENT;//可增加存储空间
}SqList;
注意:
1. 数组指针 elem 指示线性表的基地址,length:线性表的当前长度。
2. C 语言数组的下标从 0 开始,即数组中的第 i 个元素为 L.elem[i-1]
2. 线性表的链式表示和实现
顺序表的局限:插入、删除时要移动大量的元素,耗费大量时间。
链式表示:用一组任意的存储单元存储线性表
存储单元不要求连续:物理结构不反应逻辑结构
不可以随机存取,但插入和删除方便
需要两个域:一个表示数据本身;一个表示数据元素间的先后关联。——一个结点。
结点中表示关联的部分为指针域,内部存放指针或链。n 个结点链接成一个链表。
线性链表
线性链表的物理存储结构
(Zhao,Qian,Sun,Li,Zhou,Wu,Zheng,Wang)
线性链表(单链表)的定义:
typedef struct LNode{
ElemType data;
struct Lnode *next;
}Lnode, *LinkList
循环链表
循环链表:线性表的另一种链式存储结构。
双向链表
每一个结点有两个指针域:一个指向直接后继;另一个指向直接前驱。
双向循环链表
3.栈的表示和实现
栈的表示:
(1)顺序栈:栈的顺序存储
(2)链栈:栈的动态存储
顺序栈的表示和实现
顺序表示
#define STACK_INIT_SIZE 100;
#define STACKINCREMENT 10;
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
其中 stacksize 表示栈当前可以使用的最大容量。base 为栈底,top 为栈顶。栈顶指针指向栈顶元素的下一个位置(即
下次压栈时元素所放的位置)
顺序栈的结构
链栈的结构和表示
定义栈结构
顺序队列
#define MAXQSIZE 100
typedef struct {
QElemType *base;
int front;
int rear;
}SqQueue;
其中 base 为连续空间首地址,front 为队首,rear 为队尾。
剩余46页未读,继续阅读
资源评论
sjz1983
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功