数据结构1.3 抽象数据类型及例题
抽象类型的数据结构方法
话号码要求设计一个算法,当给定任何一个人的名字 时,该算法能够打印出此人的电话号码,如果该电话 簿中根本就没有这个人,则该算法也能够报告没有这 个人的标志。
路漫漫其悠远
算法的设计,依赖于计算机如何存储人的 名字和对应的电话号码,或者说依赖于名字和 其电话号码的结构。
抽象数据类型:一个数学模型以及定义在该模 型上的一组操作。
抽象数据类型实际上就是对该数据结构的 定义。因为它定义了一个数据的逻辑结构以及 在此结构上的一组算法。
用三元组描述如下:
(D,S,P)
路漫漫其悠远
数据结构在计算机中有两种不同的表示方法: 顺序表示和非顺序表示
由此得出两种不同的存储结构:顺序存储结 构和链式存储结构
抽象类型的数据结构方 法
路漫漫其悠远
2020/3/29
第一章 绪 论
1.1 什么是数据结构 1.2 基本概念和术语 1.3 抽象数据类型的表示与实现 1.4 算法和算法分
1.4.1 算法 1.4.2 算法设计的要求 1.4.3 算法效率的度量 1.4.4 算法的存储空间的需求
路漫漫其悠远
第一章 绪 论
(3)可行性 一个算法是可行的。即算法描述 的操作都是可以通过已经实现的基本运算执行 有限次来实现的。
数据结构1-3习题答案
分析下列程序段的时间复杂度: 2.6 分析下列程序段的时间复杂度: (1) (2) Int rec(int n) void main() { { int i=1,j=0,n; if(n<=1) scanf(“%d”,&n); return 1; while(i+j<=n) else { rec(n-1)*rec(nreturn rec(n-1)*rec(n-1); if(i>j) i=i+1; } else j=j+1; } } T(n)=O(2n) T(n)=O(n)
T(n)=O(n3 ) T(n)=O(n2) T(n)=O(1) T(n)=O(n) T(n)=O(n3) T(n)=O(2n)
试述你所理解的函数参数的“值传递” 3.1 试述你所理解的函数参数的“值传递”和“地址 传递” 传递”。 值传递”即在函数参数传递时将实参赋给形参, 答:“值传递”即在函数参数传递时将实参赋给形参, 而在函数体中对形参修改后不影响实参原来值; 而在函数体中对形参修改后不影响实参原来值; 地址传递” “地址传递”即在函数参数传递时传递的是实参的 地址,在函数体中可通过地址直接对实参进行操作。 地址,在函数体中可通过地址直接对实参进行操作。 什么是指针?什么是指针的指针? 3.3 什么是指针?什么是指针的指针?它们之间有本 质上的区别吗? 质上的区别吗? 一个变量的地址称为该变量的指针。 答:一个变量的地址称为该变量的指针。指针的指针 即指向指针的指针,它们的区别是: 即指向指针的指针,它们的区别是:指针存放的是 某一数据的存放地址, 某一数据的存放地址,而指针的指针存放的是指针 的存放地址,用的是一种“二级间址”方法。 的存放地址,用的是一种“二级间址”方法。
数据结构简答题和论述题
数据结构简答题和论述题
1、试描述数据结构和抽象数据类型的概念与程序设计语⾔中数据类型概念的区别。
【解答】数据结构是指相互之间存在⼀定关系的数据元素的集合。 ⽽
抽象数据类型是指⼀个数据结构以及定义在该结构上的⼀组操作。 程序设计语⾔中的数据类型是⼀个值的集合和定义在这个值集上⼀组操作的总称。抽象数据类型可以看成是对数据类型的⼀种抽象。
串:是零个或多个字符组成的有限序列。
串是⼀种特殊的线性表,它的每个结点仅由⼀个字符组成。
空串 :长度为零的串,它不包含任何字符。
空⽩串 :仅由⼀个或多个空格组成的串
⼦串 :串中任意个连续字符组成的⼦序列称为该串的⼦串。
串变量和串常量
通常在程序中使⽤的串可分为:串变量和串常量。
(1)串变量 :串变量和其它类型的变量⼀样,其取值是可以改变的。
(2)串常量 :串常量和整常数、实常数⼀样,在程序中只能被引⽤但不能改变其值。即只能读不能写。
(1)树形图表⽰: 树形图表⽰是树结构的主要表⽰⽅法。
(2)树的其他表⽰法
① 嵌套集合表⽰法:是⽤集合的包含关系来描述树结构。
② 凹⼊表表⽰法:类似于书的⽬录
③ ⼴义表表⽰法:⽤⼴义表的形式表⽰的。上图 (a)树的⼴义表表⽰法如下:
(A(B(E,F(I,J)), C,D(G,H)))
1.中序遍历的递归算法定义:
若⼆叉树⾮空,则依次执⾏如下操作:
(1)遍历左⼦树; (2)访问根结点; (3)遍历右⼦树。
2.先序遍历的递归算法定义:
若⼆叉树⾮空,则依次执⾏如下操作:
(1) 访问根结点; (2) 遍历左⼦树; (3) 遍历右⼦树。
3.后序遍历得递归算法定义:
数据结构及抽象数据类型
数据结构及抽象数据类型
1.2 什么是数据结构
结构:实体 + 关系
数据结构:
按照逻辑关系组织起来的⼀批数据
按⼀定的存储⽅法把它存储在计算机中
在这些数据上定义了⼀个运算的集合
数据结构三个基本⾯:逻辑、存储、运算
数据结构的逻辑组织
线性结构
线性表(表、栈、队列、串等)
⾮线性结构
树(⼆叉树、 Huffman树、⼆叉检索树等)
图(有向图、⽆向图等)
图树⼆叉树线性表
数据的存储结构
逻辑结构到物理存储空间的映射
计算机主存储器(内存)
⾮负整数地址编码,相邻单元的集合
基本单位是字节
访问不同地址所需时间基本相同(即随机访问)
内存可以看做是从低到⾼的线性结构
对逻辑结构(K,r),其他r R
对结点集K建⽴⼀个从K到存储器M的单元的映射:K-->M,对于每⼀个结点j K都对应⼀个唯⼀的连续存储区域c M 关系元组(j1,j2) r(其中j1,j2 K是结点)
顺序:存储单元的顺序地址(数组)
连接:指针的地址指向关系(链表)
四类:顺序、链接、索引、散列(特殊的索引结构)
抽象数据类型
简称ADT(Abstract Data Type)
定义了⼀组运算的数学模型
与物理存储结构⽆关
使软件系统建⽴在数据之上(⾯向对象)
模块化的思想的发展
隐藏运算实现的细节和内部数据结构
软件复⽤
ADT不关⼼存储细节
抽象数据结构⼆元组
<数据对象D,数据操作P>
先定义逻辑结构,再定义运算
逻辑结构:数据对象及其关系
运算:数据操作
例:栈的抽象数据类型ADT
逻辑结构:线性表
操作特点:限制访问端⼝
只允许在⼀端进⾏插⼊、删除操作
⼊栈(push)、出栈(pop)、取栈顶(top)、判栈空(isEmpty)
数据结构实验抽象数据类型——复数运算报告
【实验题目】
实验1. 抽象数据类型. 【问题描述】
用C 或C++语言设计并实现一个可进行复数运算的演示程序。 【基本要求】
1.由输入的实部和虚部生成一个复数
2.两个复数求和
3.两个复数求差
4.从已知复数中分离出实部和虚部
5.复数及相应运算结果以相应的表现形式显示。 【实现提示】
定义复数为由两个相互之间存在次序关系的实数构成的抽象数据类型,则可以利用实数的操作来实现复数的操作。
(下面的内容由学生填写,格式统一为,字体: 楷体, 行距: 固定行距18,字号: 小四) 一、【实验构思(Conceive )】(10%)
(本部分应包括:描述实验实现的基本思路,包括所用到的离散数学、工程数学、程序设计、算法等相关知识)
1. 首先构造结构体数组接受储存数据
2. 构造函数进行模块运算
3. 应用到了算法中的抽象数据类型ADT (即数据+操作),数据部分包括实部和虚部;
操作部分包括加分Plus 、减法Minus 、乘法Multiply 、除法Divide 4. 运用到了复数的基本知识及四则运算法则:
设 z 1=a + bi ,z 2=c + di ,(a ,b ,c ,d ∈R ,)
加减法:(a + bi )±(c + di )=(a ± c )+(b ± d )i 乘法:(a + bi )*(c + di )=(ac - bd )+(ad + bc )i
除法: 2222
()()()()a bi a bi c di ac bd bc ad i
c di c
d c d
++-+-==+++ 二、【实验设计(Design)】(15%) (本部分应包括:抽象数据类型的功能规格说明、主程序模块、各子程序模块的伪码说明,主程序模块与各子程序模块间的调用关系) 解答:
抽象数据类型
在本书中,为了便于叙述和分析数据结构和算法,使读者容易理解和接受,所以在实 现所定义的抽象数据类型时,把数据部分用一种已知的数据类型(如结构或数组等)来实 现,把操作部分中的每个操作用普通函数来实现,这样能够同读者熟悉的 C 语言、C++语 言,甚至其他计算机语言很好地兼容起来。
数据的逻辑结构通常采用二元组来描述,其中一元为数据元素的集合,另一元为元素 之间逻辑关系的集合,每一个逻辑关系是元素序偶的集合,如<x,y>就是一个序偶,其中 x 为前驱,y 为后继。当数据的逻辑结构存在着多个逻辑关系时,通常对每个关系分别进行 讨论。
逻辑结构的另一种描述方法是图形表示,图中每个结点表示元素,每条带箭头的连线 表示元素之间的前驱与后继的关系,其箭头一端为后继元素,另一端为前驱元素。
集合结构中的元素可以任意排列,无任何次序。 【例 1.2】一种数据结构的二元组表示为 linearity=(K,R),其中
K={01,02,03,04,05,06,07,08,09,10} R={<05,01>,<01,03>,<03,08>,<08,02>,<02,07>,<07,04>,
数据结构与算法设计课后习题及答案详解
第一章
1.数据结构研究的主要内容包括逻辑结构、存储结构和算法。
2.数据元素是数据的基本单位,数据项是数据的最小标示单位。
3.根据数据元素之间关系的不同,数据的逻辑结构可以分为集合、树形、线性、图状。
4.常见的数据存储结构有四种类型:顺序、链式、索引、散列。
5.可以从正确性、可读性、健壮性、高效性四方面评价算法的质量。
6.在一般情况下,一个算法的时间复杂度是问题规模的函数。
7.常见时间复杂度有:常数阶O(1)、线性阶O(n)、对数阶O(log2 n)、平方阶O(n²)和指数阶O(2ⁿ)。通常认为,具有常数阶量级的算法是好算法,而具有指数阶量级的算法是差算法。
8.时间复杂度排序由大到小(n+2)!>2ⁿ+²>(n+2)4次方>nlog2 n>100000.
问答题:
1.什么叫数据元素?
数据元素是数据的基本单位,是数据这个集合的个体,也称为元素、结点、顶点、记录。
2.什么叫数据逻辑结构?什么叫数据存储结构?
数据逻辑结构:指数据元素之间存在的固有的逻辑结构。
数据存储结构:数据元素及其关系在计算机内的表示。
3.什么叫抽象数据类型?
抽象数据类型是指数据元素集合以及定义在该集合上的一组操作。
4.数据元素之间的关系在计算机中有几种表示方法?
顺序、链式、索引、散列。
5.数据的逻辑结构与数据的存储结构之间存在着怎样的关系?
相辅相成,不可分割。
6.什么叫算法?算法的性质有哪些?
算法:求解问题的一系列步骤的集合。
可行性、有容性、确定性、有输入、有输出。
7.评价一个算法的好坏应该从哪几方面入手?
数据结构的抽象数据类型描述
数据结构的抽象数据类型描述
:有序的元素序列,将有限个元素按顺序排列的集合。
:有序的元素序列,但不同于数组,链表在内存中不是连续存放的,通过指针指向下⼀个元素。
:⼀种操作受限制的线性表,其限制是仅能在⼀端进⾏插⼊和删除。新添加的元素会被保存到栈顶,称为⼊栈,删除的时候移除栈顶的第⼀个元素,称为出栈。后进先出。
:⼀种操作受限制的线性表,其限制是仅能在前端进⾏删除,后端进⾏插⼊。先进先出。
:⼀种具有层次结构的有限集合。每个结点都有左右结点,⽐结点⼤的在结点右边,⽐结点⼩的在结点左边。这样的特点使得查找效率很⾼效。
:由⼀堆⽆序的、不重复的元素组成的集合。
:通过<键,值>⽅式存储数据,每个元素都有<键,值>,通过键访问元素。
:特殊的树形结构。最⼤值在根,每个⽗节点都⽐⼦节点⼤,称为最⼤堆;根是最⼩值,每个⽗节点都⽐⼦节点⼩,称为最⼩堆。
:⼀种特殊的队列,其特殊之处是根据优先级出队,⽽不是先进先出。
:n叉树结构,通过字符寻找下⼀个节点。
:集合与集合之间的运算。⽐如两个元素是否同⼀个集合;合并集合;
:类似映射。不同之处是:将key通过哈希函数转成数字索引,再去访问数组的元素。
:由n(n ≥ 0)个结点组成的集合。每个结点都可以指向其他结点。
数组
类型名称:数组。
数据对象集: n(n ≥ 0)个元素构成的有序序列。
操作集:整数i表⽰位置,ElementType为元素类型。
1. 查找元素:int find( ElementType e)
2. 插⼊元素:void insert(int i, ElementType e)
数据结构1.3 抽象数据类型及例题
队列和栈的实训练习题
1.有 个元素,其入栈的次序为A,B,C,D,E,在 1.有5个元素,其入栈的次序为A,B,C,D,E,在 A,B,C,D,E, 各种可能的出栈的次序中,以元素C,D C,D最先 各种可能的出栈的次序中,以元素C,D最先 出栈,( 为第一个出栈并且D ,(即 出栈,(即C为第一个出栈并且D为第二个出 栈)的次序有哪几个?以元素B,D最先出栈 的次序有哪几个?以元素B,D最先出栈 B,D 为第一个出栈并且D为第二个出栈) (即B为第一个出栈并且D为第二个出栈)的 次序有哪几个? 次序有哪几个? 2.写出下列程序段的运行结果 写出下列程序段的运行结果( 2.写出下列程序段的运行结果(栈中元素类 型是char). 型是char). main() { seqstack s,*p; char x,y; p=&s;
5)选择语句有 选择语句有 条件语句1 表达式) 条件语句 if(表达式 语句 表达式 语句; 条件语句2 表达式) 语句; 条件语句 if(表达式 语句 else 语句 表达式 语句; 开关语句1 表达式){ 开关语句 switch(表达式 表达式 case 值1:语句序列 语句序列1:break; 语句序列 …… case 值n:语句序列 语句序列n:break; 语句序列 default:语句序列 语句序列n+1;} 语句序列 开关语句2 值 换成”条件” 开关语句 “值”换成”条件”
《数据结构》实验报告-抽象数据类型复数的实现
实验报告
学院: 信息工程学院
专业: 计算机
信息工程学院计算机实验中心制
一实验内容
实验1 抽象数据类型复数的实现
二实验目的
1. 了解抽象数据类型(ADT)的基本概念,及描述方法。
2. 通过对复数抽象数据类型ADT的实现,熟悉C语言语法及程序
设计。为以后章节的学习打下基础。
三需求分析
复数抽象数据类型ADT的描述及实现。
[复数ADT的描述]
ADT complex{
数据对象:D={ c1,c2 c1,c2∈FloatSet }
数据关系:R={ <c1,c2> c1, c2 ∈D }
基本操作:创建一个复数 InitComplex();
输出一个复数 OutComplex();
求两个复数相加之和 AddComplex();
求两个复数相减之差 SubComplex();
求两个复数相乘之积 MulComplex();
求两个复数的商 SComplex();
等等;
} ADT complex;
本实验实现使用TC2.0实现复数的描述及操作。具体实现要求:1.从键盘分别输入2个复数,并可修改已输入的复数。
2.能输出指定的复数。
3.两个复数相加之和,观察输出结果。
4.两个复数相加之差,观察输出结果。
5.求两个复数相乘之积,观察输出结果。
6.求两个复数的商,观察输出结果。
7.用户可看到如下界面:
*****************************
* 1.输入复数C1 *
* 2.输入复数C2 *
* 3.输出复数C1 *
* 4.输出复数C2 *
* 5.求C1和C2的和 *
* 6.求C1和C2的差 *
考研-数据结构1800例题与答案(绪论)
第1章绪论
一、选择题
1. 算法的计算量的大小称为计算的()。【北京邮电大学2000 二、3 (20/8分)】
A.效率 B. 复杂性 C. 现实性 D. 难度
2. 算法的时间复杂度取决于()【中科院计算所 1998 二、1 (2分)】
A.问题的规模 B. 待处理数据的初态 C. A和B
3.计算机算法指的是(1),它必须具备(2)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法
(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性
C. 确定性、有穷性、稳定性
D. 易读性、稳定性、安全性
【南京理工大学 1999 一、1(2分)【武汉交通科技大学 1996 一、1( 4分)】4.一个算法应该是()。【中山大学 1998 二、1(2分)】
A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和
C.
5. 下面关于算法说法错误的是()【南京理工大学 2000 一、1(1.5分)】
A.算法最终必须由计算机程序实现
B.为解决某问题的算法同为该问题编写的程序含义是相同的
C. 算法的可行性是指指令不能有二义性
D. 以上几个都是错误的
6. 下面说法错误的是()【南京理工大学 2000 一、2 (1.5分)】
(1)算法原地工作的含义是指不需要任何额外的辅助空间
(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
(4)同一个算法,实现语言的级别越高,执行效率就越低
数据结构绪论练习题
数据结构绪论练习题
题目
1. 数据结构是一门研究什么内容的学科?【燕山大学 1999 二、1 (4分)】
2. 数据元素之间的关系在计算机中有几种表示方法?各有什么特点?【燕山大学1999 二、2(4分)】
3. 数据类型和抽象数据类型是如何定义的。二者有何相同和不同之处,抽象数据类型的主要特点是什么?使用抽象数据类型的主要好处是什么?【北京邮电大学 1994 一(8分)】
4. 回答问题(每题2分)【山东工业大学 1997 一(8分)】
(1)在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系?
(2)若逻辑结构相同但存储结构不同,则为不同的数据结构。这样的说法对吗?举例说明之。
(3)在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。这样说法对吗?举例说明之。
(4)评价各种不同数据结构的标准是什么?
5.评价一个好的算法,您是从哪几方面来考虑的?
【大连海事大学 1996 二、3 (2分)】【中山大学 1998 三、1 (5分)】
6.解释和比较以下各组概念【华南师范大学 2000 一(10分)】
(1)抽象数据类型及数据类型(2)数据结构、逻辑结构、存储结构
(3)抽象数据类型【哈尔滨工业大学 2000 一、1(3分)】
(4)算法的时间复杂性【河海大学 1998 一、2(3分)】
(5)算法【吉林工业大学1999 一、1(2分)】
(6)频度【吉林工业大学 1999 一、2(2分)】
7. 根据数据元素之间的逻辑关系,一般有哪几类基本的数据结构?
【北京科技大学 1998 一、1】【同济大学 1998】
数据结构习题集答案(C语言版严蔚敏)
第1章 绪论
1.1 简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。
解:数据是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象是性质相同的数据元素的集合,是数据的一个子集。 数据结构是相互之间存在一种或多种特定关系的数据元素的集合。 存储结构是数据结构在计算机中的表示。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。是对一般数据类型的扩展。 1.2 试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。
解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。 1.3 设有数据结构(D,R),其中
{}4,3,2,1d d d d D =,{}r R =,()()(){}4,3,3,2,2,1d d d d d d r =
试按图论中图的画法惯例画出其逻辑结构图。
解:
1.4 试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。 解:
数据结构(第3版)习题答案
因此,栈具有先进后出、后进先出的特点。队列也是一种特殊的线性表,它的特殊性表现在约
定了在这种线性表中数据的插入在表的一端进行,数据的删除在表的另一端进行,因此队列具
有先进先出,后进后出的特点。
2.3设计一个算法,求顺序表中值为x的结点的个数。
D.−+*abcd
(7)队列是一种特殊的线性表,其特殊性在于(C)。
A.插入和删除在表的不同位置执行B.插入和删除在表的两端位置执行
C.插入和删除分别在表的两端执行D.插入和删除都在表的某一端执行
(8)栈是一种特殊的线性表,具有(B)性质。
A.先进先出
B.先进后出
C.后进后出
D.顺序进出
(9)顺序循环队列中(数组的大小为n),队头指示front指向队列的第1个元素,队尾
/*假设数据类型为整型*/
/*此处假设数据元素只包含一个整型的关键字域*/
/*线性表长度*/
/*预定义的顺序表类型*/
算法countx(L,x)用于求顺序表L中值为x的结点的个数。
int countx(seqlist *L,datatype x)
{
int c=0;
int i;
for (i=0;i<L->length;i++)
数据结构1-4章习题答案
数据结构1-4章习题答案
一、名词解释
抽象数据类型、数据结构、数据结构的逻辑结构、数据结构的物理结构、算法、算法评价、时间复杂度、大O表示法、线性表、栈、队列、广义表、稀疏矩阵二、填空
1、抽象数据类型是由一组数据结构和在该组数据结构上的一组操作所组成。
2、在定义某种数据结构时,其数据域的数据类型可分为简单类型和结构体类型两种,为增强其通用性,应将其再定义为通用数据类型。
3、如果将线性数据结构关系描述为1:1,那么树型和图型数据结构应分别为1:N、M:N
5、算法应具备以下5个特性:有穷性、正确性、可行性、输入和输出。
6、在分析各种算法的时间复杂度时,一般只讨论相应的数量级,用f(n)表示,请问其中n的含义是处理问题的样本量
7、对于一个以顺序实现的循环队列Q[m],队首、队尾指针分别为f 和r,其盘空的条件是f=r,盘满的条件是(r+1)%m=f
8、循环链表的主要优点是最大限度的利用空间
9、链表对于数据元素的插入和删除不需要移动结点,只需改变相关结点的指针域的值。10、在一个链式栈中,若栈顶指针等于NULL,则为空栈
11、主程序第一次调用递归函数被称为外部调用,递归函数自己调用自己被称为内部调用,它们都需要利用栈保存调用后的返回地址地址。
12、某算法在求解一个10阶方程组时,运算次数是500,求解一个30阶方程组时,运算次数是4500,则该算法的时间复杂度为O(N2)
三、选择题
1、对一个线性表的存取操作很少,而插入和删除操作较多时应采用B存储结构。
A.顺序存储B.链式存储C.索引存储D.散列式存储
数据结构考研真题和答案
一、选择题
1. 算法的计算量的大小称为计算的(B )。【北京邮电大学2000 二、3 (20/8分)】
A.效率 B. 复杂性 C. 现实性 D. 难度
2. 算法的时间复杂度取决于(C )【中科院计算所1998 二、1 (2分)】
A.问题的规模 B. 待处理数据的初态 C. A和B
3.计算机算法指的是(C),它必须具备(B)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列
D. 调度方法
(2) A.可执行性、可移植性、可扩充性B. 可执行性、确定性、有穷性
C. 确定性、有穷性、稳定性
D. 易读性、稳定性、安全性
【南京理工大学1999 一、1(2分)【武汉交通科技大学1996 一、1(4分)】
4.一个算法应该是(B )。【中山大学1998 二、1(2分)】A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C.
5. 下面关于算法说法错误的是( D )【南京理工大学2000 一、1(1.5分)】
A.算法最终必须由计算机程序实现
B.为解决某问题的算法同为该问题编写的程序含义是相同的
C. 算法的可行性是指指令不能有二义性
D. 以上几个都是错误的
6. 下面说法错误的是( C )【南京理工大学2000 一、2 (1.5分)】
(1)算法原地工作的含义是指不需要任何额外的辅助空间
(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法
(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低4 A.(1) B.(1),(2) C.(1),(4) D.(3)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2)数据结构的表示用类型定义 typedef 描 数据结构的表示用类型定义(typedef 数据结构的表示用类型定义 typedef)描 数据元素类型约定为ElemType,由用 述.数据元素类型约定为 数据元素类型约定为 由用 户在使用该数据类型时自行定义. 户在使用该数据类型时自行定义 3)基本操作的算法都用以下形式的函数描述 基本操作的算法都用以下形式的函数描述: 基本操作的算法都用以下形式的函数描述 函数名(函数参数表 函数参数表) 函数类型 函数名 函数参数表 {// 算法说明 语句序列 }//函数名 函数名 除了函数的参数需要说明类型外,算法中使用 除了函数的参数需要说明类型外 算法中使用 的辅助变量可以不作变量说明,必要时对其 的辅助变量可以不作变量说明 必要时对其 作用给予注释. 作用给予注释
4)赋值语句有 赋值语句有 变量名=表达式 表达式; 简单赋值 变量名 表达式 串联赋值 变量名1=变量名 变量名2=…=变量名 变量名k=表达式 表达式; 变量名 变量名 变量名 表达式 成组赋值 (变量名 变量名1,…,变量名 变量名k)=(表达式 表达式1,…,表达式 表达式k); 变量名 变量名 表达式 表达式 结构名=结构名 结构名; 结构名 结构名 结构名=(值 结构名 值1,…,值k); 值 变量名[ 表达式; 变量名 ]=表达式 表达式 变量名[起始下标 终止下标]=变量名 起始下标.. 起始下标..终止下标 变量名[起始下标 变量名 起始下标 终止下标 变量名 起始下标 终止下标]; 终止下标 变量名←→变量名; ←→变量名 交换赋值 变量名←→变量名; 条件赋值 变量名=条件表达式 表达式T:表达式 条件表达式?表达式 表达式F; 条件赋值 变量名 条件表达式 表达式 表达式
3.写一算法依次打印一顺序栈中的元素值. 3.写一算法依次打印一顺序栈中的元素值. 写一算法依次打印一顺序栈中的元素值 4.写一算法依次打印一链队列中的元素值 写一算法依次打印一链队列中的元素值. 4.写一算法依次打印一链队列中的元素值. 5.编一程序 编一程序, 5.编一程序,将输入的非负十进制整数逆向显 如输入1234,输出显示4321. 1234,输出显示 示,如输入1234,输出显示4321.
抽象数据类型
• 抽象数据类型可通过固有数据类型来表示 和实现,即利用处理器中已存在的数据类型 和实现 即利用处理器中已存在的数据类型 来说明新的结构,用已经实现的操作来组合 来说明新的结构 用已经实现的操作来组合 新的操作. 新的操作 • 本书采用的类 语言精选了 语言的一个核 本书采用的类C语言精选了 语言精选了C语言的一个核 心子集,同时做了若干扩充修改 同时做了若干扩充修改,增强了语言 心子集,同时做了若干扩充修改,增强了语言 的描述功能. 的描述功能
队列和栈的实训练习题
1.有 个元素,其入栈的次序为A,B,C,D,E,在 1.有5个元素,其入栈的次序为A,B,C,D,E,在 A,B,C,D,E, 各种可能的出栈的次序中,以元素C,D C,D最先 各种可能的出栈的次序中,以元素C,D最先 出栈,( 为第一个出栈并且D ,(即 出栈,(即C为第一个出栈并且D为第二个出 栈)的次序有哪几个?以元素B,D最先出栈 的次序有哪几个?以元素B,D最先出栈 B,D 为第一个出栈并且D为第二个出栈) (即B为第一个出栈并且D为第二个出栈)的 次序有哪几个? 次序有哪几个? 2.写出下列程序段的运行结果 写出下列程序段的运行结果( 2.写出下列程序段的运行结果(栈中元素类 型是char). 型是char). main() { seqstack s,*p; char x,y; p=&s;
11)逻辑运算约定 逻辑运算约定 与运算&&:对于 对于A&&B,当A的值为 时,不再 的值为0时 不再 与运算 对于 当 的值为 求值. 对B求值 求值 或运算:对于 或运算 对于A||B,当A的值为非 时,不再对 当 的值为非0时 不再对 对于 的值为非 B求值 求值. 求值
典型例题讲解: 典型例题讲解 1.简述下列术语 数据、数据元素、数据项、 简述下列术语: 1.简述下列术语:数据、数据元素、数据项、 数据逻辑结构、数据类型、算法。 数据逻辑结构、数据类型、算法。 2.分析下列语句段执行的时间复杂度 分析下列语句段执行的时间复杂度。 2.分析下列语句段执行的时间复杂度。 (1)i++; (2)for(i=0;i<n;i++) if(a[i]<x) x=a[i]; (3)for(i=0;i<n;i++) for(j=0;j<n;j++) printf(“%d %d”,i+j); printf( %d ,i+j);
6)循环语句有 循环语句有 for语句 for(赋初值表达式序列 条件 修改表达 赋初值表达式序列;条件 语句 赋初值表达式序列 条件;修改表达 式序列) 语句; 式序列 语句 while语句 while(条件 语句; 语句 条件) 语句 条件 do-while语句 语句 do{语句序列 语句序列;}while(条件 条件); 语句序列 条件 7)结束语句有 结束语句有 表达式; 函数结束语句有 return 表达式 或 return; case 结束语句 break; 异常代码); 异常结束语句 exit(异常代码 异常代码
3.按n的增长率由小至大顺序排列下列各函数。 按 的增长率由小至大顺序排列下列各函数 的增长率由小至大顺序排列下列各函数。 (2/3)n (3/2)n n2 nn n! 2n n log2n n3 4.写一算法,从小到大依次输出顺序读入的三个 写一算法, 写一算法 整数x,y,z的值。 的值。 整数 的值
1)预定义常量和类型: 1)预定义常量和类型: 预定义常量和类型 #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 //Status是函数的类型 是函数的类型, //Status是函数的类型,其值是函数结果状态 代码 typedef int Status;
initstack(p); x=‘c’;y=‘k’; push(p,x);push(p,’a’); push(p,y); x=pop(p);push(p,’t’);push(p,s); x=pop(p);push(p,’a’); While(!empty(p)) {y=pop(p);printf(“%c”,y);} printf(“%c\n”,x); }
5)选择语句有 选择语句有 条件语句1 表达式) 条件语句 if(表达式 语句 表达式 语句; 条件语句2 表达式) 语句; 条件语句 if(表达式 语句 else 语句 表达式 语句; 开关语句1 表达式){ 开关语句 switch(表达式 表达式 case 值1:语句序列 语句序列1:break; 语句序列 …… case 值n:语句序列 语句序列n:break; 语句序列 default:语句序列 语句序列n+1;} 语句序列 开关语句2 值 换成”条件” 开关语句 “值”换成”条件”
Βιβλιοθήκη Baidu
8)输入和输出语句有 输入和输出语句有 格式串],变量 变量n) 输入语句 scanf([格式串 变量 格式串 变量1,…,变量 变量 格式串],表达式 输出语句 printf([格式串 表达式 格式串 表达式1,…,表达 表达 式n); 9)注释 注释 单行注释// 文字序列 单行注释 10)基本函数 基本函数 表达式1,…,表达式 表达式n) 求最大值 max(表达式 表达式 表达式 求最小值 min(表达式 表达式1,…,表达式 表达式n) 表达式 表达式 表达式) 求绝对值 abs(表达式 表达式