数据结构第一章习题
数据结构(1,2,3章)课后题答案..

西北大学可视化技术研究所
1.3填空题: (1)变量的作用域是指 变量的有效范围 (2)抽象数据类型具有 数据抽象 、 信息隐 蔽 的特点。 (3)一种抽象类型包括 数据对象 、 结构 关系 和 基本操作 。
西北大学可视化技术研究所
(4)当需要用一个形式参数直接改变对应实参 的值时,该形式参数应说明为 指针类型 。 (5)数据结构的逻辑结构分为 集合结构 、 线性结构 、 树形结构 和 图结构 四种。 (6)数据结构的存储结构分为 顺序存储结构 和 链式存储结构 两种。
西北大学可视化技术研究所
(3)顺序表中,逻辑上相邻的元素,其物理位 置 也 相邻。在单链表中,逻辑上相邻的元 素,其物理位置 不一定 相邻。 (4)在带头结点的非空单链表中,头结点的存 储位置由 头指针 指示,首元素结点的存 储位置由 头结点的next域 指示,除首元素 结点外,其它任一元素结点的存储位置由 其 直接前驱的next域 指示。
8.假设两个按元素值递增有序排列的线性 表A和B,均以单链表作为存储结构,请 编写算法,将A表和B表归并成一个按元 素值递减有序排列的线性表C,并要求利 用原表(即A表和B表的)结点空间存放 表C。
西北大学可视化技术研究所
算法描述:要求利用现有的表A和B中的结 点空间来建立新表C,可通过更改结点的next 域来重新建立新的元素之间的线性关系。为保 证新表递减有序可以利用头插法建立单链表的 方法,只是新建表中的结点不用malloc,而只 需要从A和B中选择合适的点插入到新表C中即 可。
i
西北大学可视化技术研究所
第二步:计算结果
n n (1+i)i i2 i 2 i=1 i 1 2 i 1 2 n
1 2 2 1 2 (1 2 ... n ) (1 2 ... n) 2 2
第一章数据结构概论习题

第一章概论习题一、选择题1.数据结构是具有【B 】的数据元素的集合。
A.相同性质B.相互关系C.相同运算D.数据项2.在计算机的存储结构中,逻辑上相邻的结点存储在物理位置上也相邻的连续存储单元里,称之为【 B 】。
A.逻辑结构B.顺序存储结构C.链式存储结构D.散列存储结构3.语句for(i=1;i<=n;i++) x++;的时间复杂度为【B 】。
A.O(1) B.O(n) C.O(n2) D.O(n3)4.下面不属于数据的存储结构的是【D 】。
A.散列存储B.链式存储C.索引存储D.压缩存储5.数据结构研究的是数据的【 A 】及它们之间的相互关系。
A.存储结构和逻辑结构B.存储和抽象C.理想与抽象D.理想与逻辑6.下面程序段的时间复杂度是【D 】。
for(i=0;i<2*n;i++)for(j=1;j<3*n;j++)A[i][j]=0;A.O(n) B.O(5n) C.O(6n2) D.O(n2) 7.数据的逻辑结构有两大类,分别是【 B 】。
A.顺序存储结构和链式存储结构B.线性结构和非线性结构C.压缩结构和非压缩结构D.有序结构和无序结构8.以下与数据的存储结构无关的术语是【D 】。
A.循环队列B.链表C.哈希表D.栈9.算法分析的两个主要方面是【A 】。
A.空间复杂度和时间复杂度B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性10.下面程序段的时间复杂度是【D 】。
S=0;for(i=0;i<n;i++)for(j=0;j<m;j++)s=s+a[i][j];A.O(1) B.O(m+n) C.O(log2mn) D.O(m*n) 11.能够输入计算机并能被计算机处理的符号统称为【A 】。
A.数据B.数据元素C.数据结构D.数据类型12.以下属于逻辑结构的是【C 】。
A.顺序表B.哈希表C.有序表D.单链表13.线性结构的数据元素之间存在着【A 】的关系。
数据结构(第二版)习题

9.简述以下算法的功能(其中栈和队列的元素类型均为int):
(1)void proc_1(Stack S)
{ int i, n, A[255];
n=0;
while(!EmptyStack(S))
{n++; Pop(&S, &A[n]);}
2.7试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1, a2..., an)逆置为(an, an-1,..., a1)。
(1)以顺序表作存储结构。
(2)以单链表作存储结构。
2.8假设两个按元素值递增有序排列的线性表A和B,均以单链表作为存储结构,请编
写算法,将A表和B表归并成一个按元素值递减有序的排列的线性表C,并要求利用原表(即A表和B表的)结点空间存放表C.
3.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,nk个度为k的结点,则该树中有多少个叶子结点并证明之。
4.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。
5.已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个?
6.给出满足下列条件的所有二叉树:
6.假设表达式由单字母变量和双目四则运算算符构成。试写一个算法,将一个通常书写形式(中缀)且书写正确的表达式转换为逆波兰式(后缀)。
7.假设以带头结点的循环链表表示队列,并且只设一个指针指向队尾元素结点(注意不设
头指针),试编写相应的队列初始化、入队列和出队列的算法。
8.要求循环队列不损失一个空间全部都能得到利用,设置一个标志域tag ,以tag为0或1
最新版《数据结构》各章习题及答案

最新版《数据结构》各章习题及答案第一章绪论一、选择题1.组成数据的基本单位是()(A)数据项(B)数据类型(C)数据元素(D)数据变量2.数据结构是研究数据的()以及它们之间的相互关系。
(A)理想结构,物理结构(B)理想结构,抽象结构(C)物理结构,逻辑结构(D)抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成()(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)线性结构和非线性结构(D)内部结构和外部结构4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。
① (A)数据元素(B)计算方法(C)逻辑存储(D)数据映像② (A)结构(B)关系(C)运算(D)算法5.算法分析的目的是()。
(A)找出数据结构的合理性(B)研究算法中的输入和输出的关系(C)分析算法的效率以求改进(D)分析算法的易懂性和文档性6.计算机算法指的是(①),它必须具备输入、输出和(②)等5 个特性。
① (A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法② (A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性(C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性二、判断题1.数据的机内表示称为数据的存储结构。
()2.算法就是程序。
()3.数据元素是数据的最小单位。
()4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。
()5.算法的时间复杂度取决于问题的规模和待处理数据的初态。
()三、填空题1.数据逻辑结构包括________、________、_________ 和__________ 四种类型,其中树形结构和图形结构合称为_____ 。
2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______ 个前驱结点;最后一个结点______后续结点,其余每个结点有且只有 _______ 个后续结点。
3.在树形结构中,树根结点没有_______ 结点,其余每个结点有且只有_______个前驱结点;叶子结点没有 ________ 结点,其余每个结点的后续结点可以_________。
数据结构练习题

后, rear 的值为 , front 的值 为 ,当前队列的 长 度 为 。 14.设循环队列的容量为 40(序号从 0 到 39), 现经过一系列的入队和出队运算后, 有: ① front=11,rear=19; ② front=19,rear=11; 问在这两种情况下,循环队列中各有元素多少个? 15.写出下列程序段的输出结果(队列中的元素类型 QElem Type 为 char)。 void main( ){ Queue Q; Init Queue (Q); Char x=’e’; y=’c’; EnQueue (Q,’h’); EnQueue (Q,’r’); EnQueue (Q, y); DeQueue (Q,x); EnQueue (Q,x); DeQueue (Q,x); EnQueue (Q,’a’); while(!QueueEmpty(Q)){ DeQueue (Q,y); printf(y); }; printf(x); } 16.简述以下算法的功能(栈和队列的元素类型均为 int) void algo3(Queue &Q){ Stack S; int d; InitStack(S); while(!QueueEmpty(Q)){ DeQueue (Q,d); Push(S,d); }; while(!StackEmpty(S)){ Pop(S,d); EnQueue (Q,d); } }
第一章 绪论
1.数据结构是研究数据的( )以及它们之间的相互关系。 A.物理结构,逻辑结构 B.理想结构,抽象结构 C.理想结构,物理结构 D.抽象结构,逻辑结构 2.从逻辑上可以把数据结构分为( )两大类。 A.动态结构、静态结构 B.顺序结构、链式结构 C.线性结构、非线性结构 D.初等结构、构造型结构 3.以下不属于算法要素的是( ) A. 有穷性 B. 可行性 C. 可读性 D. 输入 4.算法的时间复杂度与( )有关。 A.问题规模 B.计算机硬件性能 C.编译程序质 D.程序设计语言 2 5.某算法的时间复杂度为 O(n ),表明该算法的( ) 2 A.问题规模是 n B.执行时间等于 n2 C.执行时间与 n2 成正比 D.问题规模与 n2 成正比 6.假设某算法语句总的执行次数为 T(n)=2n³ +n² ,那么该算法的时间复杂性量级为 ( ) A.O(2) B.O(n³ ) C.O(n² ) D.O(1) 7.设 n 为正整数,下面程序段中标号为①的语句频度为 。 int i = 1; k = 0; while ( i <= n-1 ){ k += 10*i; ① i++; } 8.程序段 for( i=0; i<n; i++ ) for( j=0; j<i; j++ ) k++; 中,语句 k++的执行次数为 。 9.在下面的程序段中,对 x 的赋值语句的渐进时间复杂度为 。 for(k=1;k<=n;k++) for(j=1;j<=n;j++) x=x+1; 10.下面程序段的时间复杂度为 。 void fun(int n) { int y=1; while (y <=n) y=2*y; }
《数据结构》(C语言版) 第一章 绪论 习题及答案

一、单选题1、______ 是数据的最小单位。
A、数据项B、表元素C、信息项D、数据元素2、以下说法不正确的是______。
A、数据可由若干个数据元素构成B、数据项可由若干个数据元素构成C、数据项是不可分割的最小标识单位D、数据元素是数据的基本单位3、数据结构是指 ______ 的集合以及它们之间的关系。
A、数据B、结构C、数据元素D、计算方法4、计算机所处理的数据一般具备某种内在联系,这是指 ______。
A、数据和数据之间存在某种关系B、元素和元素之间存在某种关系C、元素内部具有某种结构D、数据项和数据项之间存在某种关系5、在数据结构中,与所使用的计算机无关的是数据的 ______ 结构。
A、逻辑B、存储C、逻辑和存储D、物理6、数据的逻辑结构可以分为 ______ 两类。
A、紧凑结构和非紧凑结构B、动态结构和静态结构C、线性结构和非线性结构D、内部结构和外部结构7、数据的逻辑结构是指 ______ 关系的整体。
A、数据项之间逻辑B、数据元素之间逻辑C、数据类型之间D、存储结构之间8、以下是数据结构中 ______ 属非线性结构。
A、串B、栈C、队列D、平衡二叉树9、以下属于逻辑结构是 ______。
A、双链表B、单链表C、顺序表D、有序表10、以下不属于存储结构是______。
A、顺序表B、线性表C、邻接表D、单链表11、在计算机中存储数据时,通常不仅要存储各数据元素的值,而且还有存储 ______。
A、数据元素之间的关系B、数据元素的类型C、数据的处理方法D、数据的存储方法12、数据结构在计算机内存中的表示是指 ______。
A、数据的逻辑结构B、数据结构C、数据元素之间的关系D、数据的存储结构13、在数据的存储中,一个节点通常存储一个 ______。
A、数据结构B、数据元素C、数据项D、数据类型14、在决定选取任何类型的存储结构时,一般不多考虑 ______。
A、各节点的值如何B、节点个数的多少C、对数据有哪些运算D、所用编程语言实现这种结构是否方便15、数据在计算机的存储器中表示时,逻辑上相邻的两个元素对应的物理地址也是相邻的,这种存储结构称之为 ______。
数据结构课后习题答案

大学课程《数据结构》课后习题答案第 1 章绪论课后习题讲解1. 填空⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。
【解答】数据元素⑵()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。
【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。
⑶从逻辑关系上讲,数据结构主要分为()、()、()和()。
【解答】集合,线性结构,树结构,图结构⑷数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。
【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系⑸算法具有五个特性,分别是()、()、()、()、()。
【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。
【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺在一般情况下,一个算法的时间复杂度是()的函数。
【解答】问题规模⑻设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。
【解答】Ο(1),Ο(nlog2n)【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。
2. 选择题⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。
A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。
⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。
则表示该遗产继承关系的最合适的数据结构应该是()。
数据结构习题集(包含全部答案).

数据结构习题集(自编)第一章绪论一、选择题1.数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()和运算的学科。
A.结构B.关系 C.运算 D.算法2.在数据结构中,从逻辑上可以把数据结构分成()。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.逻辑结构和存储结构3.线性表的逻辑顺序和存储顺序总是一致的,这种说法()。
A.正确B.不正确 C.无法确定 D.以上答案都不对4.算法分析的目的是()。
A.找出算法的合理性 B.研究算法的输人与输出关系C.分析算法的有效性以求改进 D.分析算法的易懂性5. 算法的时间复杂度取决于()A.问题的规模B待处理数据的初态 C. A和B6.一个算法应该是()。
A.程序B.问题求解步骤的描述C.要满足五个基本特性 D.A和C.7. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法与为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的8.以下与数据的存储结构无关的术语是()。
A.循环队列 B. 链表 C. 哈希表 D. 栈9.在下面的程序段中,对x的赋值语句的频度为()for(i=0;i<n;i++)for(j=0;j<n;j++)x=x+1;nA. 2n B.n C.n2 D.log210.以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队列 D.栈11. 下列数据中,()是线性数据结构。
A.哈夫曼树 B.有向无环图 C. 二叉排序树 D. 栈12.以下属于逻辑结构的是()。
A.顺序表 B. 哈希表 C.有序表 D. 单链表二、填空题1、_______是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,________是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。
(数据、数据)2、数据元素是数据的______,有些情况下也称为元素、结点、顶点、记录等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、选择题
1. 算法的计算量的大小称为计算的( )
A.效率 B. 复杂性 C. 现实性 D. 难度
3.计算机算法指的是(1),它必须具备(2)这三个特性。
(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法
(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性
C. 确定性、有穷性、稳定性
D. 易读性、稳定性、安全性
4.一个算法应该是()
A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C. 5.从逻辑上可以把数据结构分为()两大类。
A.动态结构、静态结构 B.顺序结构、链式结构
C.线性结构、非线性结构 D.初等结构、构造型结构
6.以下数据结构中,哪一个是线性结构()?
A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串
7.以下那一个术语与数据的存储结构无关?()
A.栈 B. 哈希表 C. 线索树 D. 双向链表
8.在下面的程序段中,对x的赋值语句的频度为()
FOR i:=1 TO n DO
FOR j:=1 TO n DO
x:=x+1;
A. O(2n) B.O(n) C.O(n2) D.O(log2n)
9.程序段 FOR i:=n-1 DOWNTO 1 DO
FOR j:=1 TO i DO
IF A[j]>A[j+1]
THEN A[j]与A[j+1]对换;
其中 n为正整数,则最后一行的语句频度在最坏情况下是()
A. O(n)
B. O(nlogn)
C. O(n3)
D. O(n2)
10.以下哪个数据结构不是多型数据类型()
A.栈 B.广义表 C.有向图 D.字符串
11.以下数据结构中,()是非线性数据结构
A.树 B.字符串 C.队 D.栈
12. 下列数据中,()是非线性数据结构。
A.栈 B. 队列 C. 完全二叉树 D. 堆
13.连续存储设计时,存储单元的地址()。
A.一定连续 B.一定不连续 C.不一定连续 D.部分连续,部分不连续
14.以下属于逻辑结构的是()。
A.顺序表 B. 哈希表 C.有序表 D. 单链表
二、判断题
1. 数据元素是数据的最小单位。
( )
2. 记录是数据处理的最小单位。
( )
3. 数据的逻辑结构是指数据的各数据项之间的逻辑关系;( )
4.算法的优劣与算法描述语言无关,但与所用计算机有关。
( )
5.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。
( )
6.算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。
( )
7.程序一定是算法。
( )
8.数据的物理结构是指数据在计算机内的实际存储形式。
( )
9. 数据结构的抽象操作的定义与具体实现有关。
( )
10. 在顺序存储结构中,有时也存储数据结构中元素之间的关系。
( )
11. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
( )
12. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。
( )
13. 数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构. ( )
三、填空题
13. 下面程序段中带有下划线的语句的执行次数的数量级是( )
i:=n*n WHILE i<>1 DO i:=i div 2;
14. 计算机执行下面的语句时,语句s的执行次数为 _______ 。
FOR(i=l;i<n-l;i++)
FOR(j=n;j>=i;j--)
s;
15. 下面程序段的时间复杂度为________。
(n>1)
sum=1;
for (i=0;sum<n;i++) sum+=1;
16.设m.n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。
例f(5,3)=5,有5种表示方式:3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。
①以下是该函数的程序段,请将未完成的部分填入,使之完整
int f(m,n)
int m,n;
{ if(m==1)
return (1) ;
if(n==1){
return (2) ;}
if(m<n)
{return f(m,m);}
if (m==n)
{return 1+ (3) ;}
return f(m.n-1)+f(m-n, (4) );
}
②执行程序,f(6,4)= 。
17. 在有n个选手参加的单循环赛中,总共将进行______场比赛。
四.问答及应用
1什么是数据它与信息是什么关系
2什么是数据结构有关数据结构的讨论涉及哪三个方面
3数据的逻辑结构分为线性结构和非线性结构两大类。
线性结构包括数组、链表、栈、队列、优先级队列等; 非线性结构包括树、图等、这两类结构各自的特点是什么?
4 什么是抽象数据类型?试用C++ 的类声明定义“复数”的抽象数据类型。
要求
(1) 在复数内部用浮点数定义它的实部和虚部。
(2) 实现3个构造函数:缺省的构造函数没有参数;第二个构造函数将双精度浮点数赋给复数的实部,虚部置为0;第三个构造函数将两个双精度浮点数分别赋给复数的实部和虚部。
(3) 定义获取和修改复数的实部和虚部,以及+、-、*、/等运算的成员函数。
(4) 定义重载的流函数来输出一个复数。
5 用归纳法证明:
(1)
(2)
(3)
6 什么是算法算法的5个特性是什么试根据这些特性解释算法与程序的区别。
7 设n为正整数, 分析下列各程序段中加下划线的语句的程序步数。
(1) for (int i = 1; i <= n; i++) (2) x = 0; y = 0;
for (int j = 1; j <= n; j++) { for (int i = 1; i <= n; i++)
c[i][j] = 0.0; for (int j = 1; j <= i; j++)
for (int k = 1; k <= n; k++) for (int k = 1; k <= j; k++)
c[i][j] = c[i][j] + a[i][k] * b[k][j]; x = x + y;
}
(3) int i = 1, j = 1; (4) int i =1;
while (i<=n && j<=n) { do {
i = i + 1; j = j + i; for (int j = 1; j <= n; j++)
} i = i + j;
} while ( i < 100 + n );
8 试编写一个函数计算n!*2n的值,结果存放于数组A[arraySize]的第n个数组元素中,0 £ n
£ arraySize。
若设计算机中允许的整数的最大值为maxInt,则当n > arraySize或者对于某一个k (0 £ k £ n),使得k!*2k > maxInt时,应按出错处理。
可有如下三种不同的出错处理方式:
(1) 用cerr <<及exit (1)语句来终止执行并报告错误;
(2) 用返回整数函数值0, 1来实现算法,以区别是正常返回还是错误返回;
(3) 在函数的参数表设置一个引用型的整型变量来区别是正常返回还是某种错误返回。
试讨论这三种方法各自的优缺点,并以你认为是最好的方式实现它。
9 (1) 在下面所给函数的适当地方插入计算count的语句:
void d (ArrayElement x[ ], int n ) {
int i = 1;
do {
x[i] += 2; i += 2;
} while (i <= n );
; i = 1;
while ( i <= (n / 2) ) {
x[i] += x[i+1]; i++;
}
}
(2) 将由(1)所得到的程序化简。
使得化简后的程序与化简前的程序具有相同的count值。
(3) 程序执行结束时的count值是多少?
(4) 使用执行次数的方法计算这个程序的程序步数,画出程序步数统计表。