数据结构导论串讲笔记

数据结构导论串讲笔记
数据结构导论串讲笔记

1) 已知出栈序列,写出可能的入栈序列并分析操作过程。 2) 已知入栈序列,写出可能的出栈序列并分析操作过程。

[2004/1]如下图所示,输入元素为(A , B , C ),在栈的输出端得到一个输出序列 ABC ,

求出在栈的输入端所有可能的输入序列。

ABC

输入端

【分析】A ,B ,C 三个字符排成的序列可以有: ABC 、ACB 、BAC 、BCA 、CAB 、

CBA 六种,按堆栈操作的先进后出(或后进先出)的原则,只有输入序列为

BCA 时,

输出无法得到 ABC 。因为输入序列为 BCA 时,要想先输出 A ,必须BCA 均入栈,但这 样只能得到序列 ACB 。其余五种输入序列都可在输出端得到序列 ABC 。

【解答】ABC 、ACB 、BAC 、CAB 、CBA 2 ?队列的操作

分析顺序队中元素入队出队操作及队列的状态。

(考过)

[2003/10] 设有一顺序队列 sq ,容量为5,初始状态时sq ? front=sq ? rear=0,画出做完 下列操作后队列及其头尾指针的状态变化情况,若不能入队,请简述其理。 (1) d , e , b 入队 (2) d , e 出队 (3) i , j 入队 (4)

b 出队 (5)

n , o , p 入队

【解答】队列及其头尾指针的状态变化情况如下图所示

3 .二叉树的存储结构

1)给出一棵二叉树,画出二叉链表示意图及顺序存储示意图。 [2004/10]考过)

[2003/10] 画出下列二叉树的二叉链表表示图。

输出端

j

- Sq.rear

j

i

i

b ~Sq.rear

b -—Sq.rear

b

e

■*- Sq.front

"-Sq.front

d

Sq.fr ont

-Sq.rear H

— Sq.fro nt

(a )初态 (b ) d , e , b 入队 第5

步操作无法进行,因队列已满。

(d ) i , j 入队 (e ) b 出队

([2000/10]

[2003/10]

*- Sq.rear

Sq.fro nt

【解答】二叉树的二叉链表表示

【分析】按照给出的顺序存储结构,先绘制出一棵包括空结点的完全二叉树,

然后去掉

空结点就是所求的二叉树。

【解答】

A

B C

D A A A A

E A A A A A A A A

F G

([2005/1]考过)

2)给出二叉树的顺序存储示意图,画出二叉树。 [2005/1]已知某二叉树的顺序存储结构如下所示,试画出该二叉树。

______

A B

A E A

J

A H A

A

C

F

A D

4 .二叉树的遍历

1 )给出一棵二叉树,写出对该二叉树进行先根遍历、中根遍历及后根遍历的序列。

([2001/10] [2004/1] [2005/10] 考过)

[2005/10]对于如下图所示二叉树,分别写出其先根遍历、中根遍历和后根遍历的结点访问序列。

【分析】根据二叉树三种遍历方法的原理,很容易写出该二叉树的先根遍历、中根遍历和后根遍历的结点访问序

【解答】先根遍历的结点访问序:A, B , D , E , F, C

中根遍历的结点访问序: B , F , E , D , A, C

后根遍历的结点访问序: F , E , D , B , C, A

2 )给出一棵二叉树的先根遍历和中根遍历序列,恢复二叉树,写出后根遍历的序列。

([2002/10]考过)

[2002/10]现有某二叉树,按先根遍历的序列为ABDEFCGH ,按中根遍历的序列为DEFBGHCA ,试画出此二叉树。

【分析】由先根遍历和中根遍历恢复二叉树的方法:在先根序列中确定根结点(最前面

那个结点一定是根结点),然后根据根结点在中根序列中的位置分出根结点的左、右子树(根结点前面的那些结点为根结点的左子树上的结点,根结点后面的那些结点为根结点的右子树

上的结点)。恢复该二叉树的任何一棵子树的过程仍然遵循这个原则。【解答】

3 )给出一棵二叉树的后根遍历和中根遍历序列,恢复二叉树,写出先根遍历的序列。(未考过,但可能考注意第四章的考核知识点的讲解)

5 ?树的存储结构

1 )给出一棵树,画出该树的双亲表示法、孩子链表表示法、带双亲的孩子链表表示法及孩子兄弟链表表示法的示意图。([2000/4]考过)

2)给出一棵树的某一种存储结构的示意图,画出对应的树。(未考过)

6 .树的遍历

给出一棵树,写出对该树进行先根遍历、后根遍历及层次遍历的序列。(未考过)

7 .二叉树与树、林的相互转换

1)将一棵二叉树转换为树。(未考过)

2)将一棵树转换为二叉树。(未考过)

3)将林转换为一棵二叉树。(未考过)

4)将二叉树转换为林。(未考过)

8 .够造哈夫曼树

给出一组权值,构造一棵哈夫曼树并求带权路径长度。(未考过)

9 .图的存储结构

1)给出一个图,画出该图的邻接矩阵或邻接表存储示意图。(考过)

[2005/10] 试给出下图的邻接矩阵和邻接表表示。

【分析】邻接矩阵存储方法是用一个二维数组存放顶点之间关系的信息。对于不带权的有向图,如果一个顶点到另一个顶点有边,用1表示;否则,用0表示;对于带权的有图,

如果一个顶点到另一个顶点有边,用边的权值表示;否则,用R表示。邻接表存储方法的核心思想是对于具有n个顶点的图建立n个线性链表。每一个链表最前面都分别设置一个称之为表头结点的结点,n个结点构成一个数组结构。第i个链表中的每一个链结点称之为表结点。对带权的图,其邻接表中的每个表结点都要增加一个权值域。

【解答】题中图的邻接矩阵为:

v V1 2 4 6

v V28

v V3

2

v V47 11

v V513

v 0 v

1

v

2

v

3

v

V1 V2 V3 V4 V5

题中图的邻接表为:

2)给出一个图的邻接表,画出该图的所有连通分量。(考过)[2002/10]已知无向图G的邻接表如下图所示,请画出其所有的连通分量。

【分析】根据邻接表,很容易画出其所有的连通分量。

【解答】画出的连通分量如下图所示

3 )给出一个图的邻接矩阵,画出该图的所有连通分量。(考过)

[2003/1]已知无向图G的邻接矩阵如下图。假设对其访问时每行元素必须从右到左,请画出其所有的连通分量,并且写出按深度优先搜索时各连通分量的访问序列。

V V00 0 0 1 0

v v1o o i o 1

V V20 1 0 0 0

V V3 1 0 0 0 0

V V40 1 0 0 0

V

V

1

V

2

V

3 V

V0 V1 V2 V3 V4 【分析】根据邻接表,很容易画出其所有的连通分量。

【解答】画出的连通分量如下图所示

(J)

深度优先搜索时各连通分量的访问序列:V1V2V4 V0V3

10 .图的遍历

1 )给出一个图的邻接表,写出从某一点出发进行广度优先搜索和深度优先搜索的遍历序列。([2000/10] [2001/10] [2004/1] [2004/10] 考过)

[2004/1]已知无向图G的邻接表如下图所示,请写出其从顶点V2开始的深度优先搜索的

序列。

2 )给出一个图的邻接矩阵,写出从某一点出发进行广度优先搜索和深度优先搜索的遍历序

列。([2003/10] 考过)

[2003/10]已知无向图G的邻接矩阵如下图所示,假设对其每行兀素访问时必须从右到左, 请写出从V0开始的深度优先搜索的序列。

v V 001100

V V 110111

也211011

【解答】深度优先搜索序列:V2V5V3V1V4

【分析】根据深度优先搜索的算法思想和题中给定的存储结构, 一的。

【解答】深度优先搜索序列: V 0V 2V 4V 3V 1

11 .最小生成树

给出一个带权图,画出所有可能的最小生成树。 ([2005/1] [2006/1]

【解答】构造最小生成树过程如下图所示

[2006/1] 试用Prim

所得到的遍历序列是惟

考过)

V (a)

全国自学考试数据结构导论试题及答案(4套)

全国2011年1月自学考试数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.在顺序表中查找第i个元素,时间效率最高的算法的时间复杂度为( ) A.O(1) B.O(n) C.O(log2n) D.O(n) 2.树形结构中,度为0的结点称为( ) A.树根 B.叶子 C.路径 D.二叉树 3.已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},E={,,,},则图G的拓扑序列是 ( ) A.V1,V3,V4,V6,V2,V5,V7 B.V1,V3,V2,V6,V4,V5,V7 C.V1,V3,V4,V5,V2,V6,V7 D.V1,V2,V5,V3,V4,V6,V7 4.有关图中路径的定义,表述正确的是( ) A.路径是顶点和相邻顶点偶对构成的边所形成的序列 B.路径是不同顶点所形成的序列 C.路径是不同边所形成的序列 D.路径是不同顶点和不同边所形成的集合 5.串的长度是指( ) A.串中所含不同字母的个数 B.串中所含字符的个数 C.串中所含不同字符的个数 D.串中所含非空格字符的个数 6.组成数据的基本单位是( ) A.数据项 B.数据类型 C.数据元素 D.数据变量 7.程序段 i=n;x=0; do{x=x+5*i;i--;}while (i>0); 的时间复杂度为( ) A.O(1) B.O(n) C.O(n2) D.O(n3) 8.与串的逻辑结构不同的 ...数据结构是( ) A.线性表 B.栈 C.队列 D.树

自考数据结构导论20051年10月试卷

全国2005年10月高等教育自学考试 数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.若要描述数据处理的变化过程,其正确的次序应为( ) A.处理要求、基本运算和运算、算法 B.处理要求、算法、基本运算和运算 C.基本运算和运算、处理要求、算法 D.算法、处理要求、基本运算和运算 2.从运算类型角度考虑,属于引用型的运算是( ) A.插入、删除 B.删除、修改 C.查找、读取 D.查找、删除 3.若在长度为n的顺序表中插入一个结点,则其结点的移动次数( ) A.最少为0,最多为n B.最少为1,最多为n C.最少为0,最多为n+1 D.最少为1,最多为n+1 4.在一个单链表中,若p所指结点是q所指结点的前驱结点,则在结点p、q之间插入结点s的正确操作是( ) A.s->next=q;p->next=s->next B.p->next=q;p->next=s C.s->next=q->next;p->next=s D.s->next=q->next;p->next=s->next 5.若有一串数字5、6、7、8入栈,则其不可能 ...的输出序列为( ) A.5、6、7、8 B.8、7、6、5 C.8、7、5、6 D.5、6、8、7 6.FORTRAN语言对数组元素的存放方式通常采用( ) A.按行为主的存储结构 B.按列为主的存储结构 C.按行或列为主的存储结构 D.按行和列为主的存储结构 7.树是n个结点的有穷集合,( ) A.树的结点个数可以为0,此时称该树为空树 B.树至少含有一个根结点,不能为空 C.树至少含有一个根结点和一个叶子结点 D.树至少含有一个根结点和两个叶子结点 8.深度为k的二叉树至多有( ) A.2k个叶子 B.2k-1个叶子 C.2k-1个叶子 D.2k-1-1个叶子 9.具有10个顶点的有向完全图应具有( ) 浙02142# 数据结构导论试题第 1 页(共 4 页)

02142数据结构导论201604

2016年4月高等教育自学考试全国统一命题考试 数据结构导论试卷 (课程代码 02142) 本试卷共6页。满分l00分,考试时间l50分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸。2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。3.第二部分为非选择题。必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。4.合理安排答题空间,超出答题区域无效。 第一部分选择题(共30分) 一、单项选择题(本大题共l5小题。每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。错涂、多涂或未涂均无分。 1.一个公司的组织机构是1名公司经理领导若于名部门负责人、每个部门负责人领导若干名部门员工,则适合于描述该公司组织机构的逻辑结构是 A.线性表 B.队列 C.树 D.图 2.计算n!(整数n≥0)的递归算法是:int Factorial(int n){if(n= =o)return l;else return n*Factorial(n--1);}其时闯复杂度为 A.0(n) B.0(log2n) C.O(n0) D.O(n2) 3.将一个由指针q指向的结点插在单链表中由指针P所指向的结点之后的操作是 A.p=q; B.p--:>next=q; C.q一>next=p--:>next;p-->next=q; D.p一>next—q;q-->next—p--:>next; 4. 设初始栈为空,s表示人栈操作,x表示出栈操作,则合法的操作序列是 A.sxxssxxs B.ssxsxxxs C.ssxxxssx D.sssxxxsx 5.将递归形式描述的算法改写为功能等价的非递归形式描述的算法,通常应设置的辅助结构是 A.顺序表 B.单链表C.栈 D.队列 6.设长度为n的队列用单循环链表表示(假设表尾结点为当前队列的队尾元素),若只设头指针,则入队操作、出队操作的时间复杂度分别为 A.O(n)、O(1) B.O(1)、O(1) C.O(1)、O(n) D.0(n)、0(n) 7.若采用顺序存储(一维数组)结构存储一棵如题7图所示的二叉树,根结点1的下标为l,剥结点4的下标为 A.4 B.5 C.6 D.7 8.按层序(自顶向下、从左到右)遍历二叉树时需借助队列作辅助结构。对高度为3的满二叉树进行层序遍历时,队列中所出现的元素个数最多是

2015年1月全国自考数据结构导论模拟试卷(一)

2015年1月全国自考数据结构导论模拟试卷(一) 一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 第1题. 【正确答案】 B 【你的答案】 本题分数2分 第2题算法的计算量的大小称为计算的【】 A. 效率 B. 复杂性 C. 现实性 D. 难度 【正确答案】 B 【你的答案】 本题分数2分

第3题 . 【正确答案】 A 【你的答案】 本题分数2分 第4题排序算法中,第一趟排序后,任一元素都不能确定其最终位置的算法是【】 A. 选择排序 B. 插入排序 C. 冒泡排序 D. 快速排序 【正确答案】 B 【你的答案】

本题分数2分 第5题排序趟数与序列的原始状态有关的排序方法是【】 A. 插入排序法 B. 选择排序法 C. 二路归并排序法 D. 快速排序法 【正确答案】 D 【你的答案】 本题分数2分 第6题已知某完全二叉树采用顺序存储结构,结点数据信息的存放顺序依次为A、B、C、D、E、F、G、H,该完全二叉树的后根遍历序列为【】 A. HDBEFCGA B. HDEBFGCA C. DHEBFGCA D. DEHBFGCA 【正确答案】 B 【你的答案】 本题分数2分 第7题磁盘是一种广泛使用的外部存储设备,对磁盘中的数据的存取操作【】 A. 只能用顺序方式 B. 只能用随机方式 C. 既能用顺序方式也能用随机方式 D. 方式取决于具体的机器 【正确答案】 C 【你的答案】 本题分数2分 第8题若有三个字符的字符串序列依次执行入栈操作,则其所有可能的输出排列共有【】 A. 3种 B. 4种 C. 5种 D. 6种 【正确答案】 C

自考数据结构导论复习资料

数据结构导论复习 第一章概论 1.数据:凡能被计算机存储、加工处理的对象。 2.数据元素:是数据的基本单位,在程序中作为一个整体而加以考虑和处理 3.数据项:又叫字段或域,它是数据的不可分割的最小标识单位。 4.逻辑结构需要注意的几点: ①逻辑结构与数据元素本身的内容无关 ②逻辑结构与数据元素相对位置无关 ③逻辑结构与所有结点的个数无关 5.数据元素间逻辑关系是指数据元素之间的关联方式或称“领接关系”。 6.四类基本逻辑结构(集合、线性结构、树形结构和图形结构)的不同特点? 答:集合中任何两个结点之间都没有逻辑关系,组织形式松散; 线性结构中结点按逻辑关系依次排列形成一条“锁链”; 树形结构具有分支、层次特性,其形态有点像自然界中的树; 图状结构最复杂,其中的各个结点按逻辑关系互相缠绕,任何两个结点都可以领接。 7.运算是在逻辑结构层次上对处理功能的抽象

8.基本运算的含义? 答:假如是S上的一些运算的集合,是的一个子集,使得中每一运算都可以“归约”为中的一个或多个运算,而中任一运算不可归约为别的运算,则称中运算为基本运算 9.数据结构是指由一个逻辑结构S和S上的一个基本运算集构成的整体(S ,)。 10.数据结构涉及数据表示和数据处理两个方面 11.存储结构的含义和四种基本存储方式的基本思想? 答:存储结构是指按照逻辑结构的要求建立的数据的机内表示称为存储结构。 一个存储结构应包含三个主要的部分:存储结点、机内表示和附加设施。 存储结构包括四种存储方式,顺序存储方式、链式存储方式、索引存储方式和散列存储方式。 12.运算实现与运算的联系与区别? 答:运算指的是数据在逻辑结构S上的某种操作,运算只描述处理功能,不包括处理步骤和方法;而运算实现是指一个完成该运算功能的程序,运算实现的核心是处理步骤的规定,即算法设计。 13.算法的概念和分类? 答:算法是指规定了求解给定类型问题所需的所有“处理步骤”及其执行顺序,使得给定类型的任何问题能在有限时间内被

数据结构导论串讲笔记

数据结构导论串讲笔记

1)已知出栈序列,写出可能的入栈序列并分析操作过程。 2)已知入栈序列,写出可能的出栈序列并分析操作过程。 [2004/1]如下图所示,输入元素为(A,B,C),在栈的输出端得到一个输出序列ABC,求出在栈的输入端所有可能的输入序列。 AB 输输 栈 【分析】A,B,C三个字符排成的序列可以有:ABC、ACB、BAC、BCA、CAB、CBA 六种,按堆栈操作的先进后出(或后进先出)的原则,只有输入序列为BCA时,输出无法得到ABC。因为输入序列为BCA时,要想先输出A,必须BCA均入栈,但这样只能得到序列ACB。其余五种输入序列都可在输出端得到序列ABC。 【解答】ABC、ACB、BAC、CAB、CBA

2.队列的操作 分析顺序队中元素入队出队操作及队列的状态。(考过) [2003/10]设有一顺序队列sq ,容量为5,初始状态时sq .front=sq .rear=0,画出做完下列操作后队列及其头尾指针的状态变化情况,若不能入队,请简述其理。 (1) d ,e ,b 入队 (2) d ,e 出队 (3) i ,j 入队 (4) b 出队 (5) n ,o ,p 入队 【解答】队列及其头尾指针的状态变化情况如下图所示 Sq.f Sq.r b e d Sq.f b Sq.f Sq.r j b i Sq.f Sq.r j i Sq.f Sq.r

(a )初态 (b )d ,e ,b 入队 (c ) d ,e 出队 (d ) i ,j 入队 (e )b 出队 第5步操作无法进行,因队列已满。 3.二叉树的存储结构 1) 给出一棵二叉树,画出二叉链表示意图及顺序存储示意图。([2000/10] [2003/10] [2004/10]考过) [2003/10]画出下列二叉树的二叉链表表示图。 【解答】二叉树的二叉链表表示 B E D F H G A C B B ∧ ∧ A D ∧ C G ∧ ∧ F H ∧ ∧ E ∧ ∧

2010年1月自考数据结构导论真题

全国2010年1月自学考试数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下述文件中适合于磁带存储的是() A.顺序文件 B.索引文件 C.散列文件 D.多关键字文件 2.某二叉树的后根遍历序列为dabec,中根遍历序列为debac,则先根遍历序列为() A.acbed B.becab C.deabc D.cedba 3.含有n个结点的二叉树用二叉链表表示时,空指针域个数为( ) A.n-1 B.n C.n+1 D.n+2 4.在一个图中,所有顶点的度数之和与图的边数的比是( ) A.1∶2 B.1∶1 C.2∶1 D.4∶1 5.长度为n的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为( ) A.O(1) B.O(1og2n) C.O(n) D.O(n2) 6.下述几种排序方法中,要求内存量最大的是( ) A.插入排序 B.快速排序 C.归并排序 D.选择排序 7.对n个不同值进行冒泡排序,在元素无序的情况下比较的次数为( ) A.n-1 B.n C.n+1 D.n(n-1)/2 8.对线性表进行二分查找时,要求线性表必须( ) A.以顺序方式存储 B.以链式方式存储 C.以顺序方式存储,且结点按关键字有序排列 D.以链接方式存储,且结点按关键字有序排列 9.在表长为n的顺序表上做删除运算,其平均时间复杂度为( ) A.O(1) B.O(n)

C.O(nlog2n) D.O(n2) 10.当利用大小为n的数组顺序存储一个队列时,该队列的最大容量为( ) A.n-2 B.n-1 C.n D.n+1 11.有关插入排序的叙述,错误的 ...是( ) A.插入排序在最坏情况下需要O(n2)时间 B.插入排序在最佳情况可在O(n)时间内完成 C.插入排序平均需要O(nlog2n)时间 D.插入排序的空间复杂度为O(1) 12.有关树的叙述正确的是( ) A.每一个内部结点至少有一个兄弟 B.每一个叶结点均有父结点 C.有的树没有子树 D.每个树至少有一个根结点与一个叶结点。 13.循环队列存储在数组元素A[0]至A[m]中,则入队时的操作为( ) A.rear=rear+1 B.rear=(rear+1)%(m-1) C.rear=(rear+1)%m D.rear=(rear+1)%(m+1) 14.关于串的的叙述,不正确 ...的是( ) A.串是字符的有限序列 B.空串是由空格构成的串 C.替换是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 15.对称矩阵A[N][N],A[1][1]为首元素,将下三角(包括对角线)元素以行优先顺序存储到一维数组元素T[1]至T[N(N+1)/2]中,则任一上三角元素A[i][j]存于T[k]中,下标k为( ) A.i(i-1)/2+j B.j(j-1)/2+i C.i(j-i)/2+1 D.j(i-1)/2+l 二、填空题(本大题共13小题,每小题2分,共26分) 请在每小题的空格中填上正确答案。错填、不填均无分。 16.下列程序段的时间复杂度为____________。 for(i=1;i<=n;i++) for(j=1;j<=n;j++) for(k=1;k<=n;k++) s=i+j+k; 17.在数据结构中,各个结点按逻辑关系互相缠绕,任意两个结点可以邻接的结构称为____________。

自考02142《大数据结构导论》串讲笔记

第一概论 1.1 引言 两项基本任务:数据表示,数据处理 软件系统生存期:软件计划,需求分析,软件设计,软件编码,软件测试,软件维护 由一种逻辑结构和一组基本运算构成的整体是实际问题的一种数学模型,这种数学模型的建立,选择和实现是数据结构的核心问题。 机外表示------逻辑结构------存储结构 处理要求-----基本运算和运算-------算法 1.2 数据,逻辑结构和运算 数据:凡是能够被计算机存储,加工的对象通称为数据 数据元素:是数据的基本单位,在程序中作为一个整体加以考虑和处理。又称元素,顶点,结点,记录。 数据项:数据项组成数据元素,但通常不具有完整确定的实际意义,或不被当做一个整体对待。又称字段或域,是数据不可分割的最小标示单位。 1.2.2 数据的逻辑结构 逻辑关系:是指数据元素之间的关联方式,又称“邻接关系” 逻辑结构:数据元素之间逻辑关系的整体称为逻辑结构。即数据的组织形式。 四种基本逻辑结构: 1 集合:任何两个结点间没有逻辑关系,组织形式松散 2 线性结构:结点按逻辑关系依次排列成一条“锁链” 3 树形结构:具有分支,层次特性,形态像自然界中的树 4. 图状结构:各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接。 注意点: 1.逻辑结构与数据元素本身的形式,容无关。 2.逻辑结构与数据元素的相对位置无关 3.逻辑结构与所含结点个数无关。 运算:运算是指在任何逻辑结构上施加的操作,即对逻辑结构的加工。 加工型运算:改变了原逻辑结构的“值”,如结点个数,结点容等。 引用型运算:不改变原逻辑结构个数和值,只从中提取某些信息作为运算的结果。 引用:查找,读取 加工:插入,删除,更新 同一逻辑结构S上的两个运算A和B, A的实现需要或可以利用B,而B的实现不需要利用A,则称A可以归约为B。 假如X是S上的一些运算的集合,Y是X的一个子集,使得X中每一运算都可以规约为Y中的一个或多个运算,而Y中任何运算不可规约为别的运算,则称Y中运算(相对于X)为基本运算。 将逻辑结构S和在S上的基本运算集X的整体(S,X)称为一个数据结构。数据结构包括逻辑结构和处理方式。

大数据结构导论作业一

1、章节作业 第一章概论 1.设计算法在整型数组A[n]中查找值为K的元素,若找到,则输出其位置i(0≤i≤n-1),否则输出-1作为标志,并分析算法的时间复杂度。 int search (int A[],int n,int k) { int i; i=0; while (i<=n-1) if (A[i]!=k) i++; else break; if (i<=n-1) return I; else return -1; } 当查找成功时,A[i]与k比较次数≤n;当查找不成功时,A[i]与k比较n次,所以,算法时间复杂度T(n)=O(n)。 2.写出计算方阵A[n][n]与B[n][n]乘积C[n][n]的算法,分析算法的时间复杂度。 void matrixmultiply (int A[][n],int B[][n],int C[][n],int n) { int I,j; for (i=0;i

} 以方阵阶数n作为输出规模。可知第二层循环中的第一条赋值语句共执行n2次,第三层循环体中的乘法和赋值语句共执行n3次,所以此算法的计算量为n3+n2,算法时间复杂T(n)=O(n3) 第二章线性表 1.设带头结点的单链表的结点结构如下: struct node { DataType data; struct node *next; } Node, *LinkList; 试编写一个函数int count(LinkList head,DataType x)统计单链表中数据域为x的结点个数。 int count(LinkList head,DataType x) { LinkList p=head->next; Int m=0; while (p!=NULL) { if(p->data==x) m++; p=p->next; } return m; } 2.试分别以顺序表和带头结点的单链表作存储结构,各写一个实现线性表的就地(即使用尽可能少的附加空间)逆置的算法,在原表的存储空间将线性表 (a 1,a 2 ,…,a n )逆置为(a n ,a n-1 ,…,a 1 )。 顺序表逆置算法

自考数据结构导论

全国2014年4月高等教育自学考试 数据结构导论试题 课程代码:02142 请考生按规定用笔将所有试题的答案涂、写在答题纸上。 选择题部分 注意事项: 1.答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。 2.每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题纸”的相应代码涂黑。错涂、多涂或未涂均无分。 1.下列几种算法时间复杂度中,最小的是( A ) A.O(log2n) B.O(n) C.O(n2) D.O(1) 2.数据的存储方式中除了顺序存储方式和链式存储方式之外,还有( D ) A.索引存储方式和树形存储方式 B.线性存储方式和散列存储方式 C.线性存储方式和索引存储方式 D.索引存储方式和散列存储方式 3.表长为n的顺序表中做删除运算的平均时间复杂度为( C ) A.O(1) B.O(log2n) C.O(n) D.O(n2) 4.顺序表中定位算法(查找值为x的结点序号最小值)的平均时间复杂度为( C ) A.O(1) B.O(log2n) C.O(n) D.O(n2) 5.元素的进栈次序为A,B,C,D,E,出栈的第一个元素为E,则第四个出栈的元素为( C ) A.D B.C C.B D.A 6.带头结点的链队列中,队列头和队列尾指针分别为front和rear,则判断队列空的条件为( A ) A.front==rear B.front!=NULL C.rear!==NULL D.front==NULL 7.深度为5的二叉树,结点个数最多为( A )

数据库和应用串讲笔记(珍藏版)

数据库及其应用串讲笔记(珍藏版) 第一章数据库基础知识 第一节数据库的基本概念 [填空]数据管理技术与计算机硬件、软件和计算机的应用围有着密切的联系,其发展主要经历了人工管理方式、文件系统方式和数据库系统方式等三个阶段。 [简答]数据库技术的特点: (1)数据结构化。 (2)数据共享。 (3)数据冗余小。 (4)有较高的数据独立性。 (5)数据库系统为用户提供了使用方便的用户接口。 (6)增加了系统的灵活性。 [简答]简述数据独立性的含义及其作用。 数据独立性是指应用程序与数据库的数据结构之间的相互独立,是数据库系统努力追求的目标。数据独立性有两层含义,如果数据库物理结构改变时,不影响数据库的整体逻辑结构、用户的逻辑结构和应用程序,这样我们就认为数据库达到了“物理数据独立性”;如果在整体逻辑结构改变时,不影响用户的逻辑结构及应用程序,那么我们就认为数据库达到了“逻辑数据独立性”。 [选择]数据库的基本术语: 数据库:是指长期存储在计算机的、有组织的、统一管理的相关数据的集合。 数据库系统:是实现有组织地、动态地存储大量关联数据,方便多用户访问的计算机硬件、软件和数据资源组成的系统,实际上是指采用了数据库技术后的整个计算机系统。 [简答]DBMS是数据库系统中专门用来管理数据的软件,它位于用户与操作系统(Operating System,简记为OS)之间,是用户使用数据库的接口,为用户提供了访问DB的方法,包括DB的建立、查询、更新和各种数据控制。 [填空]DBMS总是基于某种数据模型,主要有关系型、层次型、网状型和面向对象型等。 第二节数据描述 [填空]联系是指实体之间的关系。与一个联系有关的实体集的个数,称为联系的元数。 [选择、填空]二元联系的三种类型: (1)一对一联系(简记为1∶1) 对于不同型实体集A和B,如果A中的一个实体最多只与B中的一个实体有联系,反之亦然,则称A和B两实体为1∶1联系。例如,一夫一妻制社会中,“丈夫”与“妻子”两实体集之间为1∶1联系。 (2)一对多联系(简记为1∶n) 如果实体集A中至少有一个实体与实体集B中多于一个的实体有联系(可以是零个、一个或多个),则称A对B为1∶n联系。例如,“母亲”和“子女”

02142数据结构导论2010年1 月份真题及答案

2010年1月高等教育自学考试全国统一命题考试 数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下述文件中适合于磁带存储的是() A.顺序文件 B.索引文件 C.散列文件 D.多关键字文件 2.某二叉树的后根遍历序列为dabec,中根遍历序列为debac,则先根遍历序列为() A.acbed B.becab C.deabc D.cedba 3.含有n个结点的二叉树用二叉链表表示时,空指针域个数为( ) A.n-1 B.n C.n+1 D.n+2 4.在一个图中,所有顶点的度数之和与图的边数的比是( ) A.1∶2 B.1∶1 C.2∶1 D.4∶1 5.长度为n的链队列用单循环链表表示,若只设头指针,则出队操作的时间复杂度为( ) A.O(1) B.O(1og2n) C.O(n) D.O(n2) 6.下述几种排序方法中,要求内存量最大的是( ) A.插入排序 B.快速排序 C.归并排序 D.选择排序 7.对n个不同值进行冒泡排序,在元素无序的情况下比较的次数为( ) A.n-1 B.n C.n+1 D.n(n-1)/2 8.对线性表进行二分查找时,要求线性表必须( ) A.以顺序方式存储 B.以链式方式存储 C.以顺序方式存储,且结点按关键字有序排列 D.以链接方式存储,且结点按关键字有序排列

9.在表长为n的顺序表上做删除运算,其平均时间复杂度为( ) A.O(1) B.O(n) C.O(nlog2n) D.O(n2) 10.当利用大小为n的数组顺序存储一个队列时,该队列的最大容量为( ) A.n-2 B.n-1 C.n D.n+1 11.有关插入排序的叙述,错误的 ...是( ) A.插入排序在最坏情况下需要O(n2)时间 B.插入排序在最佳情况可在O(n)时间内完成 C.插入排序平均需要O(nlog2n)时间 D.插入排序的空间复杂度为O(1) 12.有关树的叙述正确的是( ) A.每一个内部结点至少有一个兄弟 B.每一个叶结点均有父结点 C.有的树没有子树 D.每个树至少有一个根结点与一个叶结点。 13.循环队列存储在数组元素A[0]至A[m]中,则入队时的操作为( ) A.rear=rear+1 B.rear=(rear+1)%(m-1) C.rear=(rear+1)%m D.rear=(rear+1)%(m+1) 14.关于串的的叙述,不正确 ...的是( ) A.串是字符的有限序列 B.空串是由空格构成的串 C.替换是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储 15.对称矩阵A[N][N],A[1][1]为首元素,将下三角(包括对角线)元素以行优先顺序存储到一维数组元素T[1]至T[N(N+1)/2]中,则任一上三角元素A[i][j]存于T[k]中,下标k为( ) A.i(i-1)/2+j B.j(j-1)/2+i C.i(j-i)/2+1 D.j(i-1)/2+l 二、填空题(本大题共13小题,每小题2分,共26分) 请在每小题的空格中填上正确答案。错填、不填均无分。 16.下列程序段的时间复杂度为____________。 for(i=1;i<=n;i++) for(j=1;j<=n;j++)

全国数据结构导论10月高等教育自学考试试题与答案

全国20XX 年10月高等教育自学考试 数据结构导论试题 课程代码:02142 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.在表长为n 的顺序表上做插入运算,平均要移动的结点数为( C ) A.n/4 B.n/3 C.n/2 D.n 2.顺序表中有19个元素,第一个元素的地址为200,且每个元素占一个字节,则第14个元素的存储地址为( B )b+(i-1)l A.212 B.213 C.214 D.215 3.由顶点V 1,V 2,V 3构成的图的邻接矩阵为???? ??????010100110,则该图中顶点V 1的出度为( C ) A.0 B.1 C.2 D.3 4.元素的进栈次序为A ,B ,C ,D ,E ,则退栈中不可能... 的序列是( C ) A.A ,B ,C ,D ,E B.B ,C ,D ,E ,A C.E ,A ,B ,C ,D D.E ,D ,C ,B ,A 5.由带权为9,2,5,7的四个叶子结点构造一棵哈夫曼树,该树的带权路径长度为(C ) A.23 B.37 C.44 D.46 6.在已知尾指针的单循环链表中,插入一个新结点使之成为首结点,其算法的时间复杂度为( A ) A.O (1) B.O (log 2n ) C.O (n ) D.O (n 2) 7.已知一个有序表为(13,18,24,35,47,50,62,83,90,115,134),当二分查找值为90的元素时,查找成功时需比较的次数为( B ) A.1 B.2 C.3 D.4 8.在查找顺序表各结点概率相等的情况下,顺序按值查找某个元素的算法时间复杂度为 ( B ) A.O (1) B.O (n) C.O (n ) D.O (log 2n)

自考02142《数据结构导论》串讲笔记

第一张概论 1.1 引言 两项基本任务:数据表示,数据处理 软件系统生存期:软件计划,需求分析,软件设计,软件编码,软件测试,软件维护 由一种逻辑结构和一组基本运算构成的整体是实际问题的一种数学模型,这种数学模型的建立,选择和实现是数据结构的核心问题。 机外表示------逻辑结构------存储结构 处理要求-----基本运算和运算-------算法 1.2 数据,逻辑结构和运算 数据:凡是能够被计算机存储,加工的对象通称为数据 数据元素:是数据的基本单位,在程序中作为一个整体加以考虑和处理。又称元素,顶点,结点,记录。 数据项:数据项组成数据元素,但通常不具有完整确定的实际意义,或不被当做一个整体对待。又称字段或域,是数据不可分割的最小标示单位。 1.2.2数据的逻辑结构 逻辑关系:是指数据元素之间的关联方式,又称“邻接关系” 逻辑结构:数据元素之间逻辑关系的整体称为逻辑结构。即数据的组织形式。 四种基本逻辑结构: 1 集合:任何两个结点间没有逻辑关系,组织形式松散 2 线性结构:结点按逻辑关系依次排列成一条“锁链” 3 树形结构:具有分支,层次特性,形态像自然界中的树 4. 图状结构:各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接。 注意点: 1.逻辑结构与数据元素本身的形式,内容无关。 2.逻辑结构与数据元素的相对位置无关 3.逻辑结构与所含结点个数无关。 运算:运算是指在任何逻辑结构上施加的操作,即对逻辑结构的加工。 加工型运算:改变了原逻辑结构的“值”,如结点个数,结点内容等。 引用型运算:不改变原逻辑结构个数和值,只从中提取某些信息作为运算的结果。 引用:查找,读取 加工:插入,删除,更新 同一逻辑结构S上的两个运算A和B, A的实现需要或可以利用B,而B的实现不需要利用A,则称A可以归约为B。 假如X是S上的一些运算的集合,Y是X的一个子集,使得X中每一运算都可以规约为Y中的一个或多个运算,而Y中任何运算不可规约为别的运算,则称Y中运算(相对于X)为基本运算。 将逻辑结构S和在S上的基本运算集X的整体(S,X)称为一个数据结构。数据结构包括逻辑结构和处理方式。

2020年10月全国数据结构导论自考试题及答案解析.doc

??????????????????????精品自学考料推荐?????????????????? 全国 2019 年 10 月高等教育自学考试 数据结构导论试题 课程代码: 02142 一、单项选择题(本大题共15 小题,每小题 2 分,共 30 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的 括号内。错选、多选或未选均无分。 1.要将现实生活中的数据转化为计算机所能表示的形式,其转化过程依次为() A. 逻辑结构、存储结构、机外表示 B. 存储结构、逻辑结构、机外表示 C.机外表示、逻辑结构、存储结构 D. 机外表示、存储结构、逻辑结构 2.若评价算法的时间复杂性,比较对数阶量级与线性阶量级,通常() A.对数阶量级复杂性大于线性阶量级 B.对数阶量级复杂性小于线性阶量级 C.对数阶量级复杂性等于线性阶量级 D.两者之间无法比较 3.下列关于线性表的基本操作中,属于加工型的操作是() A. 初始化、求表长度、插入操作 B. 初始化、插入、删除操作 C.求表长度、读元素、定位操作 D. 定位、插入、删除操作 4.在一个单链表中,若p 所指结点不是最后结点, s 指向已生成的新结点,则在p 之后插入

s 所指结点的正确操作是()A.s–>next=p –>next; p –>next=s; C.s–>next=p; p –>next=s; B.p –>next=s –>next; s –>next=p; D.s–>next=p –>next; p=s; 5.若有三个字符的字符串序列执行入栈操作,则其所有可能的输出排列共有() A.3 种 B.4 种 C.5 种 D.6 种 6.C 语言对数组元素的存放方式通常采用() A. 按行为主的存储结构 B. 按列为主的存储结构 C.按行或列为主的存储结构 D. 具体存储结构无法确定 7.根据定义,树的叶子结点其度数() A. 必大于 0 B. 必等于 0 C.必等于 1 D. 必等于 2 8.二叉树若采用二叉链表结构表示,则对于n 个结点的二叉树一定有() A.2n 个指针域其中n 个指针为 NULL B.2n 个指针域其中n+1 个指针为 NULL C.2n-1 个指针域其中n 个指针为 NULL D.2n-1 个指针域其中n+1 个指针为 NULL 9.在一个无向图中,所有顶点的度数之和等于边数的() A.1 倍 B.2 倍 C.3 倍 D.4 倍 10.若采用邻接表存储结构,则图的广度优先搜索类似于二叉树的() 1

自考02142《数据结构导论》串讲笔记

: 第一张概论 引言 两项基本任务:数据表示,数据处理 软件系统生存期:软件计划,需求分析,软件设计,软件编码,软件测试,软件维护 由一种逻辑结构和一组基本运算构成的整体是实际问题的一种数学模型,这种数学模型的建立,选择和实现是数据结构的核心问题。 机外表示------逻辑结构------存储结构 ~ 处理要求-----基本运算和运算-------算法 数据,逻辑结构和运算 数据:凡是能够被计算机存储,加工的对象通称为数据 数据元素:是数据的基本单位,在程序中作为一个整体加以考虑和处理。又称元素,顶点,结点,记录。 数据项:数据项组成数据元素,但通常不具有完整确定的实际意义,或不被当做一个整体对待。又称字段或域,是数据不可分割的最小标示单位。 — 1.2.2 数据的逻辑结构 逻辑关系:是指数据元素之间的关联方式,又称“邻接关系” 逻辑结构:数据元素之间逻辑关系的整体称为逻辑结构。即数据的组织形式。 四种基本逻辑结构: 1 集合:任何两个结点间没有逻辑关系,组织形式松散 2 线性结构:结点按逻辑关系依次排列成一条“锁链” 3 树形结构:具有分支,层次特性,形态像自然界中的树 { 4. 图状结构:各个结点按逻辑关系互相缠绕,任何两个结点都可以邻接。 注意点: 1.逻辑结构与数据元素本身的形式,内容无关。 2.逻辑结构与数据元素的相对位置无关 3.逻辑结构与所含结点个数无关。 运算:运算是指在任何逻辑结构上施加的操作,即对逻辑结构的加工。 。 加工型运算:改变了原逻辑结构的“值”,如结点个数,结点内容等。 引用型运算:不改变原逻辑结构个数和值,只从中提取某些信息作为运算的结果。 引用:查找,读取 加工:插入,删除,更新 同一逻辑结构S上的两个运算A和B, A的实现需要或可以利用B,而B的实现不需要利用A,则称A可以归约为B。

02142数据结构导论份真题及答案.doc

2012年10月高等教育自学考试全国统一命题考试 数据结构导论试题 课程代码:02142 请考生按规定用笔将所有试题的答案涂、写在答题纸上。 选择题部分 注意事项: 1. 答题前,考生务必将自己的考试课程名称、姓名、准考证号用黑色字迹的签字笔或钢笔填写在答题纸规定的位置上。 2. 每小题选出答案后,用2B铅笔把答题纸上对应题目的答案标号涂黑。如需改动,用橡皮擦干净后,再选涂其他答案标号。不能答在试题卷上。 一、单项选择题(本大题共15小题,每小题2分,共30分) 在每小题列出的四个备选项中只有一个是符合题目要求的。错选、多选或未选均无分。 1.下面几种算法时间复杂度阶数中,值最大的是 A.O(nlog2n) B.O(n2) C.O(n) D.O(2n) 2.即使输入非法数据,算法也能适当地做出反应或进行处理,不会产生预料不到的运行结果,这种算法好坏的评价因素称为 A.正确性 B.易读性 C.健壮性 D.时空性 3.设顺序表的长度为100,则在第40个元素之后插入一个元素所需移动元素的个数为 A.40 B.60 C.61 D.100 4.设带头结点的单循环链表的头指针为head,则判断该链表是否为空的条件是 A. head->next==head B. head->next==NULL C. head!=NULL D. head==NULL 5.在链栈的运算中,不需要 ...判断栈是否为空的是 A.出栈 B.进栈 C.取栈顶元素 D.求链栈的元素个数 6.一个队列的输入序列是A,B,C,D,则该队列的输出序列是 A.A,B,C,D B.B,C,D,A C.D,C,B,A D.C,D,B,A 7.以行序为主序的二维数组a[3][5]中,第一个元素a[0][0]的存储地址是100,每个元素占2个存储单元,则a[1][2]的存储地址是 A.100 B.108 C.114 D.116 8.对任何一棵二叉树T,若叶结点数为5个,则度为2的结点个数为 A.4 B.5 C.6 D.无法确定 9.m个叶结点的哈夫曼树中,其结点总数为 A.m B.2m+1

数据结构导论

数据结构导论复习大纲 第1章概论 一、程序设计的实质(计算机专业人员必须完成的两项基本任务): 数据表示:机外表示->逻辑结构->存储结构 数据处理:处理要求->基本运算和运算->算法 数据表示和数据处理是密切相关的,数据处理方式总是与数据的某种表示形式相联系。 二、“数据”分成三个不同的层次,即数据、数据元素和数据项。 凡能被计算机存储、加工的对象通称为数据。 数据元素是数据的基本单位,又被称为元素、结点、顶点或记录。 数据项是数据不可分割的最小单位。 三、数据的逻辑结构 数据的逻辑结构就是数据的组织形式。所谓逻辑关系是指数据元素之间的关联方式或称“邻接关系”。 通常有集合、线性结构、树形结构、图状结构。 *逻辑结构与数据元素本身的形式、内容、相对位置、结点个数无关 四、运算是指在任何逻辑结构上施加的操作,即对逻辑结构的加工。分为两种基本类型: 1. 加工型运算:插入、删除、更新 2. 引用型运算:读取、查找 五、存储实现的基本目标是建立数据的机内表示。数据的机内表示称为数据的存储结构。包括三个主要部分: 1. 存储结点。每个结点存放一个数据元素 2. 数据元素之间关联方式的表示,也就是逻辑结构的机内表示 3. 附加设施。 存储结构的主要部分是数据元素之间关联方式的表示。由于每个存储结点存放一个数据元素,数据元素之间的关联方式便由存储结点之间的关联方式间接地表达。通常有四种基本存储方式: 1. 顺序存储方式 2. 链式存储方式 3. 索引存储方式 4. 散列存储方式 六、运算实现 运算的实现是指一个完成该运算功能的程序。运算实现的核心是算法设计。 算法分为三类: (1)运行终止的程序 (2)伪语言算法 (3)非形式算法 七、算法质量的评价: (1)正确性:算法应能正确地实现预定的功能 (2)易读性:算法应易于阅读和理解。 (3)健壮性:当环境发生变化时,算法能适当地做出反应或进行处理 (4)高效性:达到所需要的时空性能。 算法在所有输入下的计算量的最大值称为算法的最坏情况时间复杂性或最坏情况时间复杂度

数据结构导论

数据结构导论const maxsize=顺序表的容量; typedf struct {datatype data[maxsize]; int last; {sqlist; sqlist L; 顺序表的插入算法: void insert_sqlist(sqlist L,datetype x,int i) { if(https://www.360docs.net/doc/918169339.html,st==maxsize)error(…表潢?); if((i<1)||(i>https://www.360docs.net/doc/918169339.html,st+1))error(…非法位置?); for(j=https://www.360docs.net/doc/918169339.html,st;j=i;j--) L.data[j]=L.data[j-1]; L.data[i-1]=X; https://www.360docs.net/doc/918169339.html,st=https://www.360docs.net/doc/918169339.html,st+1 } 顺序表的删除算法: void delete_sqlist(sqlist L,int i); { if((i<1)||(i>https://www.360docs.net/doc/918169339.html,st)) error(非法位置); for(j=i+1;j=https://www.360docs.net/doc/918169339.html,st;j++) L.data[j-2]=L.data[j-1]; https://www.360docs.net/doc/918169339.html,st=https://www.360docs.net/doc/918169339.html,st-1 } 顺序表的查找算法: int locate_sqlist(sqlist L,datatype X) { i=1; while((i<=https://www.360docs.net/doc/918169339.html,st)&&(L.data[i-1]!=x)) i++; if(i<=https://www.360docs.net/doc/918169339.html,st) return(i) else return(0) } 单链表类型定义 typedef struct node *pointer; struct node {datatype data; pointer next; }; typedef pointer lklist;

数据结构导论-实践设计报告-1

实践考核题第一题设计报告书 学生姓名学生学号 所在地区泰安市提交日期(年/月)2014/6 实践题目利用队的结构解决实际问题 需求分析 (1)、置空 setnull ( queue ) 将队列 queue 置成空队列 调用setnull(queue)函数把队列queue的顶端指针和低端指针指向同一块地址,这样就把队列置空。当队列中的数据元素不用或者必须要清楚的时候,就必须调用该函数把队列中的数据清空才能在插入新的数据供用户操作使用。 (2)、入队 enqueue ( queue , x ) 将元素 x 插入队列 queue 的尾部 调用函数enqueue(queue,x),通过移动首指针找到要入队的数据,直到把队列的空间占满。有 数据要进入队列时,调用该函数把数据元素x插入到队列中,先判断队列是否已满让后才能把数据元素插入到队尾。 (3)、出队 dequeue ( queue ) 删除队列 queue 的队头元素,函数返回被删除元素的值 通过移动首指针把队首的指针往下移动一个地址,这样就把一个元素数据出队了。当要出队时,队列是从头指针开始一系列操作。先判断该队列是否为空队列,如果不是的话,在进行出队操作把头指针往上移一个地址,这样就把数据出队了。 (4)、判队空isempty ( queue ) 若栈stack 为空,函数返回0 ,否则返回1 判断队列的为空的条件是(queue.rear==queue.front)如果为空返回数值1,否则返回0。当出队操作时,需要判断队列是否为空,调用该函数。 概要设计 这三个函数置空、入队和出队,使用的都是顺序循环存储结构。

队列是有限个同类型数据元素的线性序列,是一种先进先出(First In First Out)的新型表,新加入的数据元素插在队列的尾端,出队列的数据元素在队列首部被删除。 顺序存储实现的队列称为顺序队列,它由一个一维数组(用于存储队列中元素)及两个分别指示队列首和队列尾元素的变量组成,这两个变量分别称为“队列首指针”和“队列尾指针”。 (1)、队列是有限的数据元素的集合,要定义一个常量说明该队列的大小; (2)、定义顺序队列的类型包括一个数据域和两个指针域(首指针和尾指针),并声明一个该类型的变量以便于操作; (3)、根据需求分析写出每个函数的功能: 置空函数:根据函数的形参,即传递进来的队列指针,调用它的首指针和尾指针让两个指针相等,就把队列中的元素全部清空。 入队函数:首先判断该队列是否已满,如果队列已满,就退出操作。否则,执行入队操作的语句,由于是循环队列所以在移动尾指针时,要把尾指针的位置取余运算(queue.rear=(queue.rear+1)%maxsize;),然后把数据元素赋给尾指针(queue,data[queue.rear]=x;)。 出队函数:当有数据元素要出队时,首先判断该队列是否为空,如果为空时,元素出队列失败。否则,当队列不为空时,执行出队操作(queue.front=(queue.front+1)%maxsize;)返回数值1,说明出队成功。判空函数:该函数是用来判断队列是否为空的,是被别的函数调用作为判断条件用,若果为空的话就返回数值0,标志不能继续执行下面的语句。判断为空的条件是:queue.rear==queue.front;如果为空返回值为1,否则返回值为0。 详细设计 对于队列的操作首先需要把队列置空,然后插入数据元素,在插入元素时需要判断是否队列已满,在数据元素出队时需要先对队列判断是否为空,如果为空时结束程序继续执行,否则继续执行出队操作。(1)定义结构体 Typedef struct seqqueue //定义结构体类型seqqueue

相关文档
最新文档