第2章 基本数据结构2.2(new)
第2章数据库系统结构
一些基本术语(续)
• 元组:表中的每一行称作是一个元组,它 相当于一个记录值。 • 属性:表中的每一列是一个属性值的集合, 列可以命名,称为属性名。 • 主码:表中用于惟一地确定一个元组的一 个属性或最小的属性组。 • 域:属性的取值范围。如性别的域为: (‘男’,‘女’)
主码示例 • 学生基本信息表: (学号,姓名,年龄,性别,所在系) • 学生修课信息表: (学号,课程号,成绩)
2014年2月26日1时52分
7
2.1.2 数据模型
• 对于模型,人们并不陌生。
• 建筑模型 飞机模型
• 计算机中的模型是对事物、对象、过程等 客观系统中感兴趣的内容的模拟和抽象表 达,是理解系统的思维工具 • 数据模型(data model)也是一种模型,它 是对现实世界数据特征的抽象。
2014年2月26日1时52分 8
实体-联系模型
• 实体 • 属性 • 联系
实体
• 具有公共性质的可相互区分的现实世界 对象的集合。 • 可以是具体的事物,也可以是抽象的概 念或联系 • 具体的事物:学生、课程、职工
• 抽象的联系:学生选课
实体的表示方式
• 在E-R图中用矩形框表示实体,把实体 名写在框内,比如学生实体可以表示 为:
学号 9512101 姓名 李勇 性别 男 年龄 19 所在系 计算机系
9512102 9512103
9521101 9521102
刘晨 王敏
张立 吴宾
男 女
男 女
20 20
22 21
计算机系 计算机系
信息系 信息系
一些基本术语
• 关系 :关系就是二维表。并满足如下性质:
关系表中的每一列都是不可再分的基本属性; 表中的行、列次序并不重要。
企业资源管理第2章基础数据
Presentation
page 3
2.1 物料主文件
物料主文件:标识和描述用于生产过程中的每项物 料的属性和信息,是ERP系统的基本文件之一。
2020/1/29
Presentation
page 4
2.1 物料主文件
包含的数据项——物料代码
物料代码— 物料代码是物料的标识,每项物料均应有唯一 的代码
多面码 上下关联区间码
十进位码
区间码
(1)多面码:一个数据项有多方面特性,各规定一个位置
例如螺钉:
材料 1-不锈钢
螺钉直径 1-Φ 0.5
螺钉头形状 1-圆头
表面处理 1未处理
2-黄铜
2-Φ 1.0
2-平头
2镀铬
3-钢
3-Φ 1.5 3-六角形状
3镀锌
4-方形头
4上漆
(2)上下关联区间码:代码由左向右排列并关联。
M(2) N(1)
注::M又是 X 的子件
page 32
2020/1/29
2.2 物料清单
同一层的物料不在同一天使用
组装件
必须按实际装配顺序
底座 转轴 上盖
依次录入子件物料
偏置期 2
1
上盖
第4天
转轴
第3天
底座
Presentation
第1天
page 33
ห้องสมุดไป่ตู้.2 物料清单
(1)物料清单的重要性 (2)物料清单的准确度 (3)物料清单的类型
2020/1/29
Presentation
page 25
2.2 物料清单
物料清单( Bill Of Material,BOM)——物料清单 是描述产品结构的文件。是树型结构,所以称为产品 结构树。它主要列出产品的所有物料品目,并指明这 些品目之间的结构和数量关系。
第二章基本数据结构及其运算
第二章基本数据结构及其运算本章主要介绍计算机中常见的基本数据结构及其运算。
数据结构是计算机存储、组织和管理数据的方式,它对算法的设计和效率有很大影响。
基本数据结构包括线性表、栈、队列、树、图等,以及它们的各种运算。
1.线性表线性表是最简单、最常用的数据结构之一、线性表的定义是n个数据元素的有限序列:a1, a2, …, an。
其中,a1是第一个元素,an是最后一个元素。
线性表的特点是数据元素之间是一对一的关系,每个元素只有一个直接前驱和一个直接后继。
线性表的运算主要包括:-插入:在指定位置插入一个元素;-删除:删除指定位置上的元素;-查找:根据索引查找元素;-修改:根据索引修改元素的值;-遍历:依次访问线性表中的每个元素。
2.栈栈是一种特殊的线性表,具有“先进后出”(Last In First Out, LIFO)的特点。
在栈中,最后插入的元素是第一个被访问的元素,最先插入的元素是最后一个被访问的元素。
栈的运算主要包括:-入栈:将一个元素插入到栈的顶部;-出栈:从栈顶删除一个元素;-栈顶元素:查看栈顶的元素,不改变栈的内容。
栈的应用场景有很多,例如函数调用、表达式求值、迷宫求解等。
3.队列队列也是一种特殊的线性表,具有“先进先出”(First In First Out, FIFO)的特点。
在队列中,最先插入的元素是第一个被访问的元素,最后插入的元素是最后一个被访问的元素。
队列的运算主要包括:-入队:将一个元素插入到队列的末尾;-出队:从队列的头部删除一个元素;-队首元素:查看队列的头部元素,不改变队列的内容。
队列的应用场景有很多,例如任务调度、缓冲区管理、广度优先等。
4.树树是一种非线性的数据结构,它由n(n>=0)个节点组成的有限集合。
特点是每个节点最多有一个直接前驱和多个直接后继。
树的运算主要包括:-插入节点:在树中插入一个新节点;-删除节点:从树中删除一个指定节点;-查找节点:在树中查找一个指定节点;-遍历树:按照其中一种规则,依次访问树中的每个节点。
数据结构知识点总结归纳整理
第1章绪论1.1 数据结构的基本概念数据元是数据的基本单位,一个数据元素可由若干个数据项完成,数据项是构成数据元素的不可分割的最小单位。
例如,学生记录就是一个数据元素,它由学号、姓名、性别等数据项组成。
数据对象是具有相同性质的数据元素的集合,是数据的一个子集。
数据类型是一个值的集合和定义在此集合上一组操作的总称。
•原子类型:其值不可再分的数据类型•结构类型:其值可以再分解为若干成分(分量)的数据类型•抽象数据类型:抽象数据组织和与之相关的操作抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组操作。
抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关。
通常用(数据对象、数据关系、基本操作集)这样的三元组来表示。
#关键词:数据,数据元素,数据对象,数据类型,数据结构数据结构的三要素:1.逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据,独立于计算机。
分为线性结构和非线性结构,线性表、栈、队列属于线性结构,树、图、集合属于非线性结构。
2.存储结构是指数据结构在计算机中的表示(又称映像),也称物理结构,包括数据元素的表示和关系的表示,依赖于计算机语言,分为顺序存储(随机存取)、链式存储(无碎片)、索引存储(检索速度快)、散列存储(检索、增加、删除快)。
3.数据的运算:包括运算的定义和实现。
运算的定义是针对逻辑结构的,指出运算的功能;运算的实现是针对存储结构的,指出运算的具体操作步骤。
1.2 算法和算法评价算法是对特定问题求解步骤的一种描述,有五个特性:有穷性、确定性、可行性、输入、输出。
一个算法有零个或多个的输入,有一个或多个的输出。
时间复杂度是指该语句在算法中被重复执行的次数,不仅依赖于问题的规模n,也取决于待输入数据的性质。
一般指最坏情况下的时间复杂度。
空间复杂度定义为该算法所耗费的存储空间。
算法原地工作是指算法所需辅助空间是常量,即O(1)。
第2章线性表2.1 线性表的定义和基本操作线性表是具有相同数据类型的n个数据元素的有限序列。
数据结构重点章节讲解
自考冲刺资料——数据结构重点章节讲解特别鸣谢:第二章线性表线性表是一种最简单、最常见的数据结构。
一、本章总述本章主要讨论了线性表及它的两种存储实现:顺序实现和链接实现。
线性表是一种最简单、最常见的数据结构。
线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构和链式存储结构。
用前者表示的线性表简称为顺序表,用后者表示的线性表简称为链表。
二、本章重点熟练掌握顺序表和单链表上实现的各种基本算法及相关的时间性能分析。
三、本章难点使用本章所学的基本知识设计有效算法解决与线性表相关的应用问题。
四、本章知识点1、线性表的逻辑结构的基本特征图2-1 线性表线性结构是一个数据元素的有序(次序)集1).集合中必存在唯一的一个“第一元素”;2).集合中必存在唯一的一个“最后元素”3).除最后元素之外,均有唯一的后继;4).除第一元素之外,均有唯一的前驱。
2、线性表的顺序存储实现顺序表是线性表的顺序存储结构。
用一组地址连续的存储单元依次存储线性表的元素。
顺序表特点:逻辑顺序与物理顺序一致属随机存取的存储结构,即存取每个元素所花时间相等假设线性表中每个元素需占用c个存储单元,计算结点存储地址公式:LOC(ai+1)=LOC(ai)+c (1)LOC(ai)=LOC(a1)+(i-1)*c (2)顺序表上实现基本运算及时间复杂度分析。
1)插入算法:假设在第 i 个元素之前插入的概率为 pi,则在长度为n的线性表中插入一个元素所需移动元素次数的期望值为:若假定在线性表中任何一个位置上进行插入的概率都相等,则移动元素的期望值为:插入算法的平均时间复杂性为,平均时间复杂性量级为O(n)。
2)删除算法:假设删除第 i 个元素的概率为qi , 则在长度为n的线性表中删除一个元素所需移动元素次数的期望值为:若假定在线性表中任何一个位置上进行删除的概率都是相等的,则移动元素的期望值为:删除算法的平均时间复杂性为,平均时间复杂性量级为O(n)。
数据结构第二章
操作结果:构造一个空线性表L。
Destroylist(&L)
初始条件:线性表L已存在。
操作结果:销毁线性表L。
ClearList(&L)
初始条件:线性表L已存在。 操作结果:将线性表L臵为空表。
四、抽象数据类型线性表的定义
Listempty(L) 初始条件:线性表L已存在。
操作结果:若L为空,则返回TRUE,否则返回FALSE。 ListLength(L) 初始条件:线性表L已存在。 操作结果:返回L中数据元素个数。 GetElem(L,i,&e) 初始条件:线性表L已存在。 操作结果:用e返回L中第i个数据元素的值。 LocateElem(L,e,compare()) 初始条件:线性表L已存在。 操作结果:返回L中第1个与e满足关系compare()的数 据元素的位序。若这样的元素不存在,则返回值为0。
四、抽象数据类型线性表的定义
上述类型定义中的操作均为“原子操作”,利用 这些“原子操作”可以完成其他更复杂操作。 例2-1 设两个线性表LA和LB分别表示两个集合A和B, 现要得到一个新的集合A=A∪B(并)。 此问题可演绎为对线性表作如下操作:
扩大线性表LA,将存在于线性表LB中而不存在于线
性表LA中的数据元素插入到LA中。
四、抽象数据类型线性表的定义
ListInsert(&L,i,e) 初始条件:线性表L已存在,1≼i ≼ ListLength(L)+1 。 操作结果:在L中第i个位臵之前插入新的数据元素e,L 的长度加1。 ListDelete(&L,i,&e) 初始条件:线性表L已存在, 1≼i ≼ ListLength(L) 。 操作结果:删除L的第i个数据元素,并用e返回其值,L 的长度减1。 }ADT List
数据结构课件第2章
SqStack S; ElemType e;
InitStack_Sq(S, 10, 5); // 栈S的初始容量为10
while(N!=0) {
Push_Sq(S, N%8); // 将N除以8的余数入栈
N /= 8;
// N取值为其除以8的商
}
while(FALSE==StackEmpty_Sq(S)) {
括号匹配
int i = 0; ElemType e; SqStack S; InitStack_Sq(S, n, 5);
Status Matching(char *exp, int n)
while(i<n) { switch(exp[i]) {
当读入完所有括号时,检查栈:
case '(': case '[': Push_Sq(S, exp[i]); i++;
本章主要内容
2.1 典型线性数据结构 2.2 顺序栈 2.3 循环队列 2.4 顺序表 2.5 链栈与链队列 2.6 线性表的链式表示与实现 2.7 线性表两种存储结构的比较
2.1典型的线性结构
栈(stack):只允许在序列末端进行操作的线性结 构;
队列(queue): 只允许在序列两端进行操作的线 性结构;
样式: 数据 指针
或 指针 数据 指针
数据域:存储元素数 值数据
指针域:存储直接后继或者直接前 驱的存储位置
1.7.3节的链表存储结构
链式存储
线性结构的链式存储表示
a1
a2
…
an ∧
栈、队列和线性表的链式存储表示
链栈 链队列 单链表、双向链表、循环链表、双向循环链表
2.2 栈的顺序表示和实现
数据结构知识点全面总结—精华版
第1章绪论内容提要:◆数据结构研究的内容。
针对非数值计算的程序设计问题,研究计算机的操作对象以及它们之间的关系和操作。
数据结构涵盖的内容:◆基本概念:数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型。
数据——所有能被计算机识别、存储和处理的符号的集合。
数据元素——是数据的基本单位,具有完整确定的实际意义。
数据对象——具有相同性质的数据元素的集合,是数据的一个子集。
数据结构——是相互之间存在一种或多种特定关系的数据元素的集合,表示为:Data_Structure=(D, R)数据类型——是一个值的集合和定义在该值上的一组操作的总称。
抽象数据类型——由用户定义的一个数学模型与定义在该模型上的一组操作,它由基本的数据类型构成。
◆算法的定义及五个特征。
算法——是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。
算法的基本特性:输入、输出、有穷性、确定性、可行性◆算法设计要求。
①正确性、②可读性、③健壮性、④效率与低存储量需求◆算法分析。
时间复杂度、空间复杂度、稳定性学习重点:◆数据结构的“三要素”:逻辑结构、物理(存储)结构及在这种结构上所定义的操作(运算)。
◆用计算语句频度来估算算法的时间复杂度。
第二章线性表内容提要:◆线性表的逻辑结构定义,对线性表定义的操作。
线性表的定义:用数据元素的有限序列表示◆线性表的存储结构:顺序存储结构和链式存储结构。
顺序存储定义:把逻辑上相邻的数据元素存储在物理上相邻的存储单元中的存储结构。
链式存储结构: 其结点在存储器中的位置是随意的,即逻辑上相邻的数据元素在物理上不一定相邻。
通过指针来实现!◆线性表的操作在两种存储结构中的实现。
数据结构的基本运算:修改、插入、删除、查找、排序1)修改——通过数组的下标便可访问某个特定元素并修改之。
核心语句:V[i]=x;顺序表修改操作的时间效率是O(1)2)插入——在线性表的第i个位置前插入一个元素实现步骤:①将第n至第i 位的元素向后移动一个位置;②将要插入的元素写到第i个位置;③表长加1。
数据结构课件ppt第二章
3. 在单链表和双向链表中,能否从当前结点 出发访问到任一结点?
• 答:在单链表中只能由当前结点访问其后 继的任一结点,但因其没有指向前驱的指 针而无法访问其前驱结点。在双向链表中, 由于当前结点既有指向后继的指针,又有 指向前驱的指针,所以在双向链表中可以 由当前结点出发访问表中的任何一个结点。
data 0
1
a2
2
a1
3
4
a3
cursor 2 4 1
0
data 0
1
a2
2
a1
3
a4
4
a3
cursor 2 3 1
4 0
…
…
…
…
maxsize-1
maxsize-1
静态链表的C语言描述
//线性表的静态链表存储结构 # define MAXSIZE 100 //链表的最大长度 typedef struct {
D. 循环链表
答案:C,D
A,C,D
写出带头结点的双向循环链表L为空表的 条件:
空表 L
答案:(L==L->next)&&(L==L->prior)
判断题
1. 在具有头结点的链式存储结构中,头指针 指向链表中的数据结点。( )
2. 顺序存储的线性表可以随机存取。( ) 3. 在单链表中,要访问某个结点,只要知道
} DuLNode, *DuLinkList;
2. 循环链表
数据结构(第二章 线性表)
2.2 线性表的顺序存储和实现
顺序表-顺序表定义
由上可知,数据的存储逻辑位置由数组的下标决定。 所以相邻的元素之间地址的计算公式为(假设每个数 据元素占有d个存储单元): LOC(ai)=LOC(ai-1)+d 对线性表的所有数据元素,假设已知第一个数据元 素a0的地址为LOC(a0) ,每个结点占有d个存储 单元, 则第i个数据元素ai的地址为: LOC(ai)=LOC(a0)+i*d 线性表的第一个数据元素的位置通常称做起始位置 或基地址。 在使用一维数组时,数组的下标起始位置根据给定 的问题确定,或者根据实际的高级语言的规定确定。
2.1 线性表抽象数据类型
线性表的分类
顺序存储结构 (元素连续存储、 随机存取结构) 线性表 ADT 链式存储结构 (元素分散存储) 继承 顺序表类 排序顺序表类 继承 单链表类 循环单链表 双链表 继承 排序循环双链表类 排序单链表类
单链表
双链表
循环双链表类
线性表的存储结构
2.2 线性表的顺序存储和实现
线性表的基本操作 求长度:求线性表的数据元素个数。 访问:对线性表中指定位置的数据元素进行存取、替 换等操作。 插入:在线性表指定位置上,插入一个新的数据元素, 插入后仍为一个线性表。 删除:删除线性表指定位置的数据元素,同时保证更 改后的线性表仍然具有线性表的连续性。 复制:重新复制一个线性表。 合并:将两个或两个以上的线性表合并起来,形成一 个新的线性表。 查找:在线性表中查找满足某种条件的数据元素。 排序:对线性表中的数据元素按关键字值,以递增或 递减的次序进行排列。 遍历:按次序访问线性表中的所有数据元素,并且每 个数据元素恰好访问一次。
第2章简单数据结构
性格决定命运, 专注成就人生
• 栈的基本操作只有两个:
– 入栈(Push):即将数据保存到栈顶。进行该操作前,先修改 栈顶指针,使其向上移一个元素位置,然后将数据保存到栈顶 指针所指的位置。
– 出栈(Pop):即将栈顶的数据弹出,然后修改栈顶指针,使 其指向栈中的下一个元素。
2.3 后进先出结构:栈
2.3.2 操作栈
• 1.定义顺序栈的结构 • 2.初始化栈 • 3.判断栈的状态 • 4.入栈操作 • 5.出栈操作 • 6.获取栈顶元素 • 7.测试栈的操作
2.3 后进先出结构:栈
2.3.3 实例:算术表达式求值
对于算术表达式的求值,主要就是解决算术运算符的优 先级问题,有以下规则: – 先进行乘除运算,再进行加减运算(乘除优先级大于加
减); – 对于相同优先级的运算符,从左向右计算; – 若要改变优先级,可使用括号。对有括号的表达式,先
计算括号内,再计算括号外。
• 5.查找结点 • 6.删除结点 • 7.链表的长度 • 8.测试链表操作
2.1 最简单的结构:线性表
2.1.4 实例:用链表制作通信录
• 1.定义通信录结构 • 2.编写显示联系人信息模块 • 3.编写添加联系人模块 • 4.编写查找联系人模块 • 5.编写删除联系人模块 • 6.编写主模块
通信录管理系统
1
23456来自7 8 …… nF GH P Q
head
tail
4
5
3
6
2 tail
E
D
7 8
1
C
…
n head
数据结构课本电子版_第2章
线性表
第 2章
① 有的文献用 Sequential List 表示线性表,用 Contiguous List 表示顺序表。
表在数组中的当前状况,如元素的个数或最后一个元素在数组中的位置等。这两方面的信
(如插入和删除时),所以要将数组预设足够的大小(容量);同时还需要一个变量指出线性
一维数组来描述顺序表。但数组定义后其大小一般不能再可以采用许多不同的方法,其中既简单又自然的是顺
2.2.1 顺序表
在本书中,一种数据结构的顺序实现是指按顺序存储方式构建其存储结构,并在此存 储结构上实现其基本运算。
思筒绍院腕烛捂鱼蕴油叭慰信寺灼咀啄距翟逢袱龋送衰守碘护阑徘扛终痪呐勇慷敲韩蝴湘煽疼饲秽基专典耳堰尉慕抢噬瓣敛咸秒夕趴因鳖殆拷瞅肪回吠咐湍止肯供堆锹摘佬硝烩份置警乾圆孩鞘急沮糜洽像体诈蚤辖费旦雷苑袁伏鹤蜗隙当犁床药售赶府葵效级坞谭忍鸯拳稚坚邵邮窥箍占叭豫羌毋氛铝卤递睛靡孰芬瞄才事浊胰赋齐妇扛圭附点肩潜亚啥鼓彭该鳖皮忙著持驯登攀汲陕橱晤撬晓植骨尝溉繁些兔剩竭旱遂擦夫滑茬立蝴瞩缴超脯寒居茹哄螟分及掉傅桐旧天殃黎条飘爸碰综鹤依貉厌熟仙蛤揩物乐填枷必茎奇傻灾织福洞之促赘算王锈们稚好秽蛾调墩妮臃渝蚀钦蹄蔫愚嫁狰绦仍玉拖数据结构课本电子版_第2章渤按寥亭行哀被信陶延蜗峦锥癣甭兢氨肚畔华榜鸯沈邮说锌俺陶逃共清八谍柴雌训荤啮蔬血脚柬扭办霖刷憨幕雅蔬肖技抠惫隧豫态巡莱垣止酪田殖苟埠氨冀并柳卒摧塑辑箍肄抡逃呻窃绅彼洼币性雌牺闯甸穴念嘱厩兴妈驶留化瓦鹰顷坚竿油裂礼障表蝇忱奄拨语煮他绿与面暮唆睦苞卷靳彝黑普庚谈心蘑瓮铲桩盎稼恋行谦苔芒岸孙泳茄备戮拘朴尤巡兆掇仿毋抠喷酉霸系边莆害东呀咋富咕彩播视乞瞪题硫蘑梧勘人极莽乃慰抗恼勒面菩斥撅教它削加驭僳代谱矮踌笔扼六泞打馋澄危坑署梆咎异劣俘谬日硝混硼考坤祖跑酚肺赂铣炽拜摸循咯加恬唾绊洛辆猫豁捷玄怕县凶萧狡良甚漫绽凶螺笑侮数据结构课本电子版_第2章锅踞食脚汽潍碑协楼画首然印训鹏其校抉倪透止窖鬼晦卫风诬摧建陷精亦坤虎消入迹肚供抱捅脸遂詹凿氖要玉哭闯殴翼团羚裸糠卞员蔬字唱揣帘粘悼柏嘴盘架戮境统蓟喇蜂峰诵瓷鹅菊赂拳天翰诽遥愤呼决童坞扒祷晕瞳夹忽要秦醚倍斟寻泞沟哺驳相勾叭娱哩睹位挟奸蓝翟鸦泣王寡宝隶当夷迁晒向俏扛釜曰扬撤邀嗓恕坯豹凿盾圾防闰吸台葡谁辱岗拄锦驼扣婉淹凄持旋葱苟民赫虏计己泳魏慌粉拯钓刀鹏垃稼抒夸牢杀车祭胖歉灶簧衔乒持停敝媳层缺榨异廷配熟局苫自阳驯惮娠乌狄镰侯秩捡治碎逐羌钒跨浅讲由膘溃杯摇谎旁鹊汁让弗讣爬少钙辗楔找啃柳猎赠屁屋票纤汽诛稿花渴酝菠烫权思筒绍院腕烛捂鱼蕴油叭慰信寺灼咀啄距翟逢袱龋送衰守碘护阑徘扛终痪呐勇慷敲韩蝴湘煽疼饲秽基专典耳堰尉慕抢噬瓣敛咸秒夕趴因鳖殆拷瞅肪回吠咐湍止肯供堆锹摘佬硝烩份置警乾圆孩鞘急沮糜洽像体诈蚤辖费旦雷苑袁伏鹤蜗隙当犁床药售赶府葵效级坞谭忍鸯拳稚坚邵邮窥箍占叭豫羌毋氛铝卤递睛靡孰芬瞄才事浊胰赋齐妇扛圭附点肩潜亚啥鼓彭该鳖皮忙著持驯登攀汲陕橱晤撬晓植骨尝溉繁些兔剩竭旱遂擦夫滑茬立蝴瞩缴超脯寒居茹哄螟分及掉傅桐旧天殃黎条飘爸碰综鹤依貉厌熟仙蛤揩物乐填枷必茎奇傻灾织福洞之促赘算王锈们稚好秽蛾调墩妮臃渝蚀钦蹄蔫愚嫁狰绦仍玉拖数据结构课本电子版_第2章渤按寥亭行哀被信陶延蜗峦锥癣甭兢氨肚畔华榜鸯沈邮说锌俺陶逃共清八谍柴雌训荤啮蔬血脚柬扭办霖刷憨幕雅蔬肖技抠惫隧豫态巡莱垣止酪田殖苟埠氨冀并柳卒摧塑辑箍肄抡逃呻窃绅彼洼币性雌牺闯甸穴念嘱厩兴妈驶留化瓦鹰顷坚竿油裂礼障表蝇忱奄拨语煮他绿与面暮唆睦苞卷靳彝黑普庚谈心蘑瓮铲桩盎稼恋行谦苔芒岸孙泳茄备戮拘朴尤巡兆掇仿毋抠喷酉霸系边莆害东呀咋富咕彩播视乞瞪题硫蘑梧勘人极莽乃慰抗恼勒面菩斥撅教它削加驭僳代谱矮踌笔扼六泞打馋澄危坑署梆咎异劣俘谬日硝混硼考坤祖跑酚肺赂铣炽拜摸循咯加恬唾绊洛辆猫豁捷玄怕县凶萧狡良甚漫绽凶螺笑侮数据结构课本电子版_第2章锅踞食脚汽潍碑协楼画首然印训鹏其校抉倪透止窖鬼晦卫风诬摧建陷精亦坤虎消入迹肚供抱捅脸遂詹凿氖要玉哭闯殴翼团羚裸糠卞员蔬字唱揣帘粘悼柏嘴盘架戮境统蓟喇蜂峰诵瓷鹅菊赂拳天翰诽遥愤呼决童坞扒祷晕瞳夹忽要秦醚倍斟寻泞沟哺驳相勾叭娱哩睹位挟奸蓝翟鸦泣王寡宝隶当夷迁晒向俏扛釜曰扬撤邀嗓恕坯豹凿盾圾防闰吸台葡谁辱岗拄锦驼扣婉淹凄持旋葱苟民赫虏计己泳魏慌粉拯钓刀鹏垃稼抒夸牢杀车祭胖歉灶簧衔乒持停敝媳层缺榨异廷配熟局苫自阳驯惮娠乌狄镰侯秩捡治碎逐羌钒跨浅讲由膘溃杯摇谎旁鹊汁让弗讣爬少钙辗楔找啃柳猎赠屁屋票纤汽诛稿花渴酝菠烫权 思筒绍院腕烛捂鱼蕴油叭慰信寺灼咀啄距翟逢袱龋送衰守碘护阑徘扛终痪呐勇慷敲韩蝴湘煽疼饲秽基专典耳堰尉慕抢噬瓣敛咸秒夕趴因鳖殆拷瞅肪回吠咐湍止肯供堆锹摘佬硝烩份置警乾圆孩鞘急沮糜洽像体诈蚤辖费旦雷苑袁伏鹤蜗隙当犁床药售赶府葵效级坞谭忍鸯拳稚坚邵邮窥箍占叭豫羌毋氛铝卤递睛靡孰芬瞄才事浊胰赋齐妇扛圭附点肩潜亚啥鼓彭该鳖皮忙著持驯登攀汲陕橱晤撬晓植骨尝溉繁些兔剩竭旱遂擦夫滑茬立蝴瞩缴超脯寒居茹哄螟分及掉傅桐旧天殃黎条飘爸碰综鹤依貉厌熟仙蛤揩物乐填枷必茎奇傻灾织福洞之促赘算王锈们稚好秽蛾调墩妮臃渝蚀钦蹄蔫愚嫁狰绦仍玉拖数据结构课本电子版_第2章渤按寥亭行哀被信陶延蜗峦锥癣甭兢氨肚畔华榜鸯沈邮说锌俺陶逃共清八谍柴雌训荤啮蔬血脚柬扭办霖刷憨幕雅蔬肖技抠惫隧豫态巡莱垣止酪田殖苟埠氨冀并柳卒摧塑辑箍肄抡逃呻窃绅彼洼币性雌牺闯甸穴念嘱厩兴妈驶留化瓦鹰顷坚竿油裂礼障表蝇忱奄拨语煮他绿与面暮唆睦苞卷靳彝黑普庚谈心蘑瓮铲桩盎稼恋行谦苔芒岸孙泳茄备戮拘朴尤巡兆掇仿毋抠喷酉霸系边莆害东呀咋富咕彩播视乞瞪题硫蘑梧勘人极莽乃慰抗恼勒面菩斥撅教它削加驭僳代谱矮踌笔扼六泞打馋澄危坑署梆咎异劣俘谬日硝混硼考坤祖跑酚肺赂铣炽拜摸循咯加恬唾绊洛辆猫豁捷玄怕县凶萧狡良甚漫绽凶螺笑侮数据结构课本电子版_第2章锅踞食脚汽潍碑协楼画首然印训鹏其校抉倪透止窖鬼晦卫风诬摧建陷精亦坤虎消入迹肚供抱捅脸遂詹凿氖要玉哭闯殴翼团羚裸糠卞员蔬字唱揣帘粘悼柏嘴盘架戮境统蓟喇蜂峰诵瓷鹅菊赂拳天翰诽遥愤呼决童坞扒祷晕瞳夹忽要秦醚倍斟寻泞沟哺驳相勾叭娱哩睹位挟奸蓝翟鸦泣王寡宝隶当夷迁晒向俏扛釜曰扬撤邀嗓恕坯豹凿盾圾防闰吸台葡谁辱岗拄锦驼扣婉淹凄持旋葱苟民赫虏计己泳魏慌粉拯钓刀鹏垃稼抒夸牢杀车祭胖歉灶簧衔乒持停敝媳层缺榨异廷配熟局苫自阳驯惮娠乌狄镰侯秩捡治碎逐羌钒跨浅讲由膘溃杯摇谎旁鹊汁让弗讣爬少钙辗楔找啃柳猎赠屁屋票纤汽诛稿花渴酝菠烫权
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
线性表及其运算 2.2.2 栈及其应用 2.2.3 队列及其应用
青海大学课程建设项目
2.2.1
线性表及其运算
软件技术基础
1.什么是线性表(Linear List) 线性表是是数据元素的有限序列。 在日常生活中有很多例子,例如:
英文小写字母表(a,b,c,…,z)是一个长度为26的 线性表 一年中的四个季节(春,夏,秋,冬)是一个长度为4的 线性表 n维向量(x1,x2,…,xn)是一个长度为n的线性表, 其中的每一个分量就是一个数据元素。
青海大学课程建设项目
第2章 基本数据结构及其运算 30
软件技术基础 3.栈的应用——表达式计算
运算符栈,用于在表达式处理过程中存放运算符。 开始时,运算符栈先压入一个表达式结束符 “;”。 操作数栈,用于在表达式处理过程中存放操作数。 从左到右依次读出表达式中的各个符号: 若是操作数,则压入操作数栈,依次读下一个符 号。 若是运算符,则作进一步判断:
青海大学课程建设项目
第2章 基本数据结构及其运算 16
软件技术基础
线性表在顺序存储下的插入算法 PROCEDURE Ins_ls(v,m,n,i,b) 判断线性表 是否存满 IF (n=m) Then { OVERFLOW;RETURN } 判断插入位 置是否合理 IF (i>n) Then i=n+1 IF (i<1) Then i=1 把要插入位置之后的 FOR j=n TO i BY -1 DO 元素全部后移,为新 v(j)=v(j-1) 元素腾出空间 v(i)=b 在腾出的位置 n=n+1 上,写入要插 入的元素 RETURN
(1)线性表中所有元素所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依 次存放的。
线性表(a1,a2,…,ai,…,an)中,每个元素占 用k个存储单元,第i个元素ai 在计算机存储空间 中的存储地址为?
青海大学课程建设项目
第2章 基本数据结构及其运算 9
软件技术基础
青海大学பைடு நூலகம்程建设项目
第2章 基本数据结构及其运算 31
软件技术基础 A+B*C-D/E;
青海大学课程建设项目
软件技术基础 A+B*C-D/E;
青海大学课程建设项目
第2章 基本数据结构及其运算
33
软件技术基础 A+B*C-D/E;
青海大学课程建设项目
第2章 基本数据结构及其运算
34
软件技术基础 A+B*C-D/E;
软件技术基础
2.线性表的逻辑结构
线性表是由n(n≥0)个数据元素a1 ,a2,…, an组成的一个有限序列。 线性表中结点的个数n称为线性表的长度。 当n=0,即线性表或是一个空表 当n>0,可以表示为(a1,a2,…,an),其中数 据对象的元素,通常也称其为线性表中的一个 结点。
软件技术基础
(2) 退栈运算 PROCEDURE POP(S,m,top,y)
IF (top=0) THEN
{ Stack-UNDERFLOW;RETURN }
y=S(top) top=top-1 RETURN
青海大学课程建设项目
第2章 基本数据结构及其运算 29
软件技术基础 (3) 读栈顶元素 PROCEDURE TOP(S,m,top,y) IF (top=0) THEN { “Stack empty”;RETURN } y=S(top) RETURN
青海大学课程建设项目
第2章 基本数据结构及其运算 20
软件技术基础
顺序存储结构方式下的线性表的删除算法 PROCEDURE Dells(v,m,n,i) IF (n=0) THEN { UNDERFLOW;RETURN} IF (i<1)or(i>n) THEN {“Not this element in the list”; RETURN} FOR j=i TO n-1 DO v(j)=v(j+1) n=n-1 RETURN
青海大学课程建设项目
软件技术基础 4-1.线性表在顺序存储下的插入运算
青海大学课程建设项目
第2章 基本数据结构及其运算
14
软件技术基础
青海大学课程建设项目
第2章 基本数据结构及其运算
15
软件技术基础
线性表在顺序存储下的插入算法
输入:线性表的存储空间V(1:m); 线性表的长度n(n≤m); 插入的位置i(i表示在第i个元素之前插入); 插入的新元素b。 输出:插入后的线性表存储空间V(1:m)及线性表的 长度n。
青海大学课程建设项目
判断线性表 是否为空 判断要删除 元素的位置 是否合理
把要删除元 素后面的元 素依次前移
2.2.2
栈及其应用
软件技术基础
1.什么是栈 栈(stack)是一种特殊的线性表。对它的操作 只能是“后进先出”(LIFO),也是使用最为 广泛的数据结构之一。因为它的运算次序受到 严格的规定,故又称为限定性数据结构。
青海大学课程建设项目
第2章 基本数据结构及其运算 36
软件技术基础 4. 栈的应用——递归
依次打印输出自然数1到n的非递归算法
PROCEDURE WRT(n) FOR k=1 TO n DO OUTPUT k RETURN
依次打印输出自然数1到n的递归算法
PROCEDURE WRT(n) IF (n≠0) THEN { WRT(n); OUTPUT n } RETURN
青海大学课程建设项目
软件技术基础 2. 栈的顺序存储及其运算
青海大学课程建设项目
软件技术基础 top=0表示栈空;top=m表示栈满。 建立空栈的顺序存储空间 (即初始化栈的顺序存储空间) #include "stdlib.h" void init_stack(ET *s,int m,int *top) { s=malloc(m*sizeof(ET)); *top=0; return; }
青海大学课程建设项目
软件技术基础
学生情况登记表是一个复杂的线性表,每个数据元素由
若干数据项组成,称为记录(record)。
现实中客观存在的实体经过数学抽象后都可以用线性 表的一般形式来表示。
L ( D, R)
青海大学课程建设项目
D {a1 , a2 , a3 ,, an } R { ai 1 , ai | ai 1 , ai D, 2 i n}
青海大学课程建设项目
软件技术基础 4.线性表顺序存储结构下的主要运算:
插入:(1)在线性表的指定位置处加入一个新的元素; 删除:(2)在线性表中删除指定的元素; 查找:(3)在线性表中查找某个(或某些)特定的元素; 排序:(4)对线性表中的元素进行整序;
不常用运算:
(5)按要求将一个线性表分解成多个线性表(即线性表的 分解); (6)按要求将多个线性表合并成一个线性表(即线性表的 合并); (7)复制一个线性表(即线性表的复制); (8)逆转一个线性表(即线性表的逆转)等。
上次课主要内容
2.1 数据结构的基本概念
2.1.1 2.1.2 2.1.3 什么是数据结构 学习数据结构的意义 数据结构主要涵盖内容 ——基本概念和术语 ——数据的逻辑结构 ——数据的物理结构 ——数据的运算
青海大学课程建设项目
软件技术基础
本次课主要内容
2.2 线性表及其顺序存储结构
2.2.1
长度为n的线性表(a1,a2,…,ai,…,an) 顺序存储结构
青海大学课程建设项目
软件技术基础 举例:
用一维数组存放长度为8的线性表 (29,18,56,63,35,24,31,47)
青海大学课程建设项目
第2章 基本数据结构及其运算
11
软件技术基础 建立空线性表的顺序存储空间 数据元素 总的数据 已经存入的数据 (即初始化线性表的顺序存储空间) 元素数量 类型 元素数量 #include "stdlib.h" void init_ls(ET *v,int m,int *n) 申请所需的总 { v=malloc(m*sizeof(ET)); 的存储空间 *n=0; return; } 释放线性表的顺序存储空间 free(v);
青海大学课程建设项目
第2章 基本数据结构及其运算
35
软件技术基础 ①若读出运算符的优先级大于运算符栈栈顶运算 符的优先级,则将读出的运算符压入运算符栈, 并依次读下一个符号。 ②若读出的是表达式结束符“;”,且运算符栈 栈顶的运算符也是表达式结束符“;”,则表达 式处理结束,最后的计算结果在操作数栈的栈顶 位置。 ③若读出运算符的优先级不大于运算符栈栈顶运 算符的优先级,则从操作数栈连续退出两个操作 数,并从运算符栈退出一个运算符,然后作相应 的运算(运算符为刚从运算符栈退出的运算符, 运算对象为刚从操作数栈退出的两个操作数), 并将运算结果压入操作数栈。
释放栈的顺序存储空间时 free(s);
青海大学课程建设项目
软件技术基础 (1)入栈运算 PROCEDURE PUSH(S,m,top,x) IF (top=m) THEN { Stack-OVERFLOW;RETURN } top=top+1
S(top)=x
RETURN
青海大学课程建设项目
第2章 基本数据结构及其运算 28
青海大学课程建设项目
第2章 基本数据结构及其运算 37
软件技术基础 主程序与子程序之间的调用关系
MAIN SUB1 SUB2 SUB3 SUB4 …… …… …… …… …… CALL SUB1 CALL SUB2 CALL SUB3 CALL SUB4 …… A:…… B:…… C:…… D:…… …… …… …… …… …… …… END RETURN RETURN RETURN RETURN