数据结构章节练习题
数据结构各章习题及答案
数据结构习题及解答第1章 概述【例1-1】分析以下程序段的时间复杂度。
for(i=0;i<n;i++)for(j=0;j<m;j++) A[i][j]=0;解:该程序段的时间复杂度为O (m*n )。
【例1-2】分析以下程序段的时间复杂度。
i=s=0; ①while(s<n){ i++; ②s+=i; ③}解:语句①为赋值语句,其执行次数为1次,所以其时间复杂度为O (1)。
语句②和语句③构成while 循环语句的循环体,它们的执行次数由循环控制条件中s 与n 的值确定。
假定循环重复执行x 次后结束, 则语句②和语句③各重复执行了x 次。
其时间复杂度按线性累加规则为O (x )。
此时s 与n 满足关系式:s ≥n ,而s=1+2+3+…+x 。
所以有:1+2+3+…+x ≥n ,可以推出:x=n n 241212811+±-=+±-x 与n 之间满足x=f(n ),所以循环体的时间复杂度为O (n ),语句①与循环体由线性累加规则得到该程序段的时间复杂度为O (n )。
【例1-3】分析以下程序段的时间复杂度。
i=1; ①while(i<=n) i=2*i; ②解:其中语句①的执行次数是1,设语句②的执行次数为f (n ),则有:n n f ≤)(2。
得:T(n)=O(n2 log)【例1-4】有如下递归函数fact(n),分析其时间复杂度。
fact(int n){ if(n<=1) return(1); ①elsereturn(n*fact(n-1)); ②}解:设fact(n)的运行时间函数是T(n)。
该函数中语句①的运行时间是O(1),语句②的运行时间是T(n-1)+ O(1),其中O(1)为常量运行时间。
由此可得fact(n)的时间复杂度为O(n)。
习题1一、单项选择题1.数据结构是指(1. A )。
A.数据元素的组织形式B.数据类型C.数据存储结构D.数据定义2.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为(2. C )。
数据结构练习题
后, 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; }
数据结构习题(包含全部答案解析)
数据结构习题集(自编)第一章绪论一、选择题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章绪论一、选择题1. 算法的计算量的大小称为计算的()。
A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()A.问题的规模 B. 待处理数据的初态 C. A和B3. 下面说法错误的是()(1)算法原地工作的含义是指不需要任何额外的辅助空间(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界(4)同一个算法,实现语言的级别越高,执行效率就越低A.(1) B.(1),(2) C.(1),(4) D.(3)4. 以下数据结构中,哪一个是线性结构()A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串5. 在下面的程序段中,对x的赋值语句的频度为()for (int i=1; i<=n; i++)for (int j=1; i<=n;j++)x+=1;A.2n B.n C.n2D.log2n二、判断题1. 数据元素是数据的最小单位。
( )2. 算法的优劣与算法描述语言无关,但与所用计算机有关。
( )3. 数据的物理结构是指数据在计算机内的实际存储形式。
( )4. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
( )5. 数据结构的抽象操作的定义与具体实现有关。
( )三、填空1.数据的物理结构包括的表示和的表示2. 数据结构中的逻辑结构有(1),(2),(3),__(4)_四种。
3. 一个数据结构在计算机中称为存储结构4. 数据结构中评价算法的两个重要指标是5. 一个算法具有5个特性: (1)、(2)、(3),有零个或多个输入、有一个或多个输出。
6. 已知如下程序段, 语句1执行的频度为(1);语句2执行的频度为(2);for (int i=n; i>=1; i--) {x = x+1; //语句1for (int j = n; j>=1; j--)y = y+1; //语句2}7. 下面程序段中带下划线的语句的执行次数的渐进时间复杂度为int i=1; while (i<n) i = i*2;四、应用题1. 解释和比较以下各组概念(1)抽象数据类型及数据类型(2)数据结构、逻辑结构、存储结构(3)抽象数据类型(4)算法的时间复杂性(5)算法(6)频度2. 若有100个学生,每个学生有学号,姓名,平均成绩,采用什么样的数据结构最方便,写出这些结构?3. 有实现同一功能的两个算法A1和A2,其中A1的时间复杂度为Tl=O(2n),A2的时间复杂度为T2=O(n2),仅就时间复杂度而言,请具体分析这两个算法哪一个好.4. 下列算法对一n位二进制数加1,假如无溢出,该算法的最坏时间复杂性是什么?并分析它的平均时间复杂性。
数据结构章节练习
5.在线性链表存储结构下,插入操作算法
。
A. 需要判断是否表满
B. 需要判断是否表空
C. 不需要判断表满
D. 需要判断是否表空和表满
6.一个长度为 n(n>1)的单链表,已知有头和尾两个指针,则执行
表的长度有关。
操作与链
A. 删除单链表中的第一个元素 B. 删除单链表中的最后一个元素
C. 在单链表第一个元素前插入一个新元素
。
5.数据逻辑结构包括 ① 、 ②
和③
三种类型,树形结构和图形结构
合称为 ④。
6.我们把每种数据结构均视为抽象类型,它不但定义了数据的 ① 理数据的 ② 。
方式,还给出了处
7.一个算法的时间复杂度是用该算法 ①的多少来度量的,一个算法的空间复杂度是用该
算法在运行过程中所占用的②___ _的大小来度量的。
10.对于循环队列
。
A. 无法判断队列是否为空
B. 无法判断队列是否为满
C. 队列不可能满
D. 以上说法都不是
11. 设环形队列中数组的下标范围是1~n,头尾指针分别是 f 和 r,则其元素个数
为
。
A. r-f
B. r-f+1
C. (r-f+1) mod n
D. (r-f+n) mod n
12. 若用一个大小为6的数组来实现循环队列,且当前队尾指针 rear 和队头指针 front 的值
C. s->next = h; h = h->next;
D. s->next = h->next; h->next=s;
8.一个栈的入栈序列是 a,b,c,d,e,则栈的不可能的输出序列是
《数据结构》习题集
《数据结构》习题集第一章序论思考题:1。
1简述下列术语:数据、数据元素、数据对象、数据结构、存储结构、数据类型、抽象数据类型作业题:1。
2设有数据结构(D,R),其中D={d1, d2, d3, d4}R={r1,r2}r1={<d1, d2〉,<d2,d3>,<d3,d4〉,〈d1, d4>,〈d4,d2>, 〈d4, d1〉}r2={(d1, d2),(d1,d3),(d1, d4),(d2, d4), (d2, d3)}试绘出其逻辑结构示意图。
1。
3设n是正整数。
试写出下列程序段中用记号“△”标注的语句的频度: (1)i=1; k=0;while(i〈=n-1){△k+=10*i;i++;}(2) i=1; k=0;do {△k+=10*i;i++;}while(i〈=n-1)(3)i=1; k=0;do {△k+ = 10*i; i++;}while(i==n);(4) i=1; j=0;while(i+j≤n) {△if(i〈j) i++;else j++;}(5) x=n; y=0; //n是不小于1的常数while(x〉=(y+1)*(y+1)){△y++;}(6)x=91; y=100;while ( y>0 ){△if(x>100) { x—=10; y——; }else x++ ;}(7) for( i=0; i〈n; i++)for( j=i; j〈n; j++)for( k=j; k〈n; k++)△x+=2;1。
4 试写一算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值。
1.5 已知k阶斐波那契序列的定义为:f0=0,f1=0,……,f k—2=0,f k—1=1;f n=f n—1+f n-2+……+f n-k, n=k,k+1,……试编写求k阶斐波那契序列的第m项值的函数算法,k和m均以值调用的形式在函数参数表中出现。
数据结构练习题1-5章(答案)
11、 一个栈的输入序列为 123…n,若输出序列的第一个元素是 n,输出第 i(1<=i<=n)个元
素是( B )。
A. 不确定
B. n-i+1
C. i
D. n-i
1
12、 有六个元素 6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?( C )
A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6
A. 1 和 5
B. 2 和 4
C. 4 和 2
D. 5 和 1
16、下面关于串的的叙述中,哪一个是不正确的?( B )
A.串是字符的有限序列
B.空串是由空格构成的串
C.模式匹配是串的一种重要运算 D.串既可以采用顺序存储,也可以采用链式存储
17、设有两个串 p 和 q,其中 q 是 p 的子串,求 q 在 p 中首次出现的位置的算法称为( c )
A. 内存地址
B.数组下标 C.下一元素地址
D.左、右孩子地址
7、下面的叙述不正确的是( BC )
A.线性表在链式存储时,查找第 i 个元素的时间同 i 的值成正比
B. 线性表在链式存储时,查找第 i 个元素的时间同 i 的值无关
C. 线性表在顺序存储时,查找第 i 个元素的时间同 i 的值成正比
D. 线性表在顺序存储时,查找第 i 个元素的时间同 i 的值无关
13、 设有三个元素 X,Y,Z 顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是( C )。
A.XYZ
B. YZX
C. ZXY
D. ZYX
14、 假设以数组 A[m]存放循环队列的元素,其头尾指针分别为 front 和 rear,则当前队列中的
数据结构—章节练习题
第2章线性表班级学号__________-姓名一、判断正误()1. 链表的每个结点中都恰好包含一个指针。
()2. 链表的物理存储结构具有同链表一样的顺序。
()3. 链表的删除算法很简单,因为当删除链中某个结点后,计算机会自动将后续各个单元向前移动。
()4. 线性表的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。
()5. 顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。
()6. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
()7. 线性表在物理存储空间中也一定是连续的。
()8. 线性表在顺序存储时,逻辑上相邻的元素未必在存储的物理位置次序上相邻。
()9. 顺序存储方式只能用于存储线性结构。
()10. 线性表的逻辑顺序与存储顺序总是一致的。
二、单项选择题()1.数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为:(A)存储结构(B)逻辑结构(C)顺序存储结构(D)链式存储结构()2. 一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是(A)110 (B)108 (C)100 (D)120()3. 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:(A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)(B)在第i个结点后插入一个新结点(1≤i≤n)(C)删除第i个结点(1≤i≤n)(D)将n个结点从小到大排序()4. 向一个有127个元素的顺序表中插入一个新元素并保持原来顺序不变,平均要移动个元素(A)8 (B)63.5 (C)63 (D)7()5. 链接存储的存储结构所占存储空间:(A)分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针(B)只有一部分,存放结点值(C)只有一部分,存储表示结点间关系的指针(D)分两部分,一部分存放结点值,另一部分存放结点所占单元数()6. 线性表若采用链式存储结构时,要求内存中可用存储单元的地址: (A)必须是连续的(B)部分地址必须是连续的(C)一定是不连续的(D)连续或不连续都可以()7.线性表L在情况下适用于使用链式结构实现。
数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。
A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。
A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。
for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。
for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。
int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。
2. 数据的存储结构被分为__________、_________、__________和__________四种。
3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。
4. 一种抽象数据类型包括__________和__________两个部分。
5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
数据结构名章节习题及答案
p=p->next; } q=p; while (q!=NULL && q->data<max) q=q->next; r->next=q; r=p->next; while (r!=q) } } 3. 解:void dels(ListNode *head) { ListNode *p=head->next , *q, *pre, *r; while (p!=NULL) { q=p->next; pre=p; while (q!=NULL) { if (p->data==q->data) { r=q; pre->next=q->next; q=q->next; free®; } else { pre=q; q=q->next; } } p=p->next; } 4. 解 : 当 L 不空时从头开始扫描 L, 每次扫描找出一个最小值的结点*p1 及其前趋结点*pre1, 输出*p1 之值,再从表中删除。算法如下: void dels(ListNode *L) { ListNode *p, *pre, *pre1, *p1; while (L->next!=NULL) { pre=pre1=L; p=p1=L->next; while (p!=NULL) { if (p->data<p1->data) pre1=pre; p1=p; } pre=p; p=p->next; } cout <<p1->data<<end1; pre1->next=p1->next; free(p1); { { free(p); p=r; r=r->next;
解:由于是有序表,所以相同值域的结都是相信的。同 p 扫描递增单链表,若*p 结点的 值域等于其后结点的值域,删除后者。
数据结构各章习题及答案
链表,每个结点有价格、数量和链指针三个域。现出库(销售)m 台价格为 h 的电视机,试编写算法修改原链表。 4.某 百 货 公 司 仓 库 中 有 一 批 电 视 机 , 按 其 价 格 从 低 到 高 的 次 序 构 成 一 个 循 环 链表,每个结点有价格、数量和链指针三个域。现新到 m 台价格为 h 的电视 机,试编写算法修改原链表。 5.线 性 表 中 的 元 素 值 按 递 增 有 序 排 列 , 针 对 顺 序 表 和 循 环 链 表 两 种 不 同 的 存 储方式,分别编写 C 函数删除线性表中值介于 a 与 b(a≤b)之间的元素。 6.设 A=(a0,a1,a2,...,an-1),B=(b0,b1,b2,...,bm-1)是两个给定的线性表, 它们的结点个数分别是 n 和 m,且结点值均是整数。 若 n=m,且 ai= bi (0≤i<n ),则 A=B; 若 n<m ,且 ai=bi (0≤i<n ),则 A<B; 若存在一个 j, j<m ,j<n ,且 ai=bi (0≤i<j ), 若 aj<bj,则 A<B, 否则 A>B。 试编写一个比较 A 和 B 的 C 函数,该函数返回 -1 或 0 或 1,分别表示 A<B 或 A=B 或 A>B。 7.试编写算法,删除双向循环链表中第 k 个结点。 8.线 性 表 由 前 后 两 部 分 性 质 不 同 的 元 素 组 成 (a0,a1,...,an-1,b0,b1,...,bm-1),m 和 n 为两部分元素的个数,若线性表分 别 采 用 数 组 和 链 表 两 种 方 式 存 储 ,编 写 算 法 将 两 部 分 元 素 换 位 成 (b0,b1,...,bm-1,a0,a1,...,an-1),分 析 两 种 存 储 方 式 下 算 法 的 时 间 和 空 间 复杂度。 9.用 循 环 链 表 作 线 性 表 (a0,a1,...,an-1)和( b0,b1,...,bm-1)的 存 储 结 构 , 头指针分别为 ah 和 bh,设计 C 函数,把两个线性表合并成形如 ( a0,b0,a1,b1,…)的 线 性 表 ,要 求 不 开 辟 新 的 动 态 空 间 ,利 用 原 来 循 环 链 表 的结点完成合并操作,结构仍为循环链表,头指针为 head,并分析算法的时间 复杂度。 10.试 写 出 将 一 个 线 性 表 分 解 为 两 个 带 有 头 结 点 的 循 环 链 表 ,并 将 两 个 循 环 链 表 的 长 度 放 在 各 自 的 头 结 点 的 数 据 域 中 的 C 函 数 。其 中 ,线 性 表 中 序 号 为 偶 数 的 元 素 分 解 到 第 一 个 循 环 链 表 中 ,序 号 为 奇 数 的 元 素 分 解 到 第 二 个 循 环 链 表 中。
(完整版)数据结构练习题及参考答案
数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。
A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。
A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。
for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。
for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。
int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。
2. 数据的存储结构被分为__________、_________、__________和__________四种。
3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。
4. 一种抽象数据类型包括__________和__________两个部分。
5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。
数据结构分章节习题
各章习题各章习题 (1)第一章绪论(7) (1)第二章线性表(6) (1)第三章栈和队列(5) (2)第四章串(3) (2)第五章数组(3) (3)第六章二叉树(20) (3)第七章图(5) (5)第九章查找(5) (6)第十章排序(8) (6)第一章绪论(7)1、数据结构中的4种逻辑结构是_________、__________、_________、_________.2.在数据结构中,从逻辑上可以把数据结构分成_________。
A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构3、一个算法除了输入和输出特性外,还必须具有的特性不包括_____A有穷性 B 可扩展性 C 确定性D可行性4.算法分析的两个主要方面是____。
A.空间复杂性和时间复杂性B.正确性和简明性C.可读性和文档性D.数据复杂性和程序复杂性5.设有数据结构D={d1,d2,d3,d4},R={(d1,d2),(d2,d3),(d3,d4)}画出相关逻辑图6.设图G=(V,E),V={1,2,3,4,5,6},E={<1,2>,<1,3>,<2,5>,<3,6>,<6,5>,<5,4>,<6,4>}。
请画出该图7.计算下列标有@语句的频度i=1;j=0;while (i+j<=n){if(i<j) j++ //@else i++;}第二章线性表(6)1.在n个元素的顺序表中插入或删除一个元素,需要平均移动________个元素。
2.带头结点的单循环链表,判定表空的条件是(设指向头结点的指针是H)_________________。
3. 不带头结点的单链表head为空的判定条件是___________A.head == NULLB.head->next == NULLC.head->next == headD.head != NULL4.线性表的顺序存储结构是一种______的存储结构,线性表的链式存储结构是一种______的存储结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章绪论一、选择题1. 算法的计算量的大小称为计算的()。
A.效率 B. 复杂性 C. 现实性 D. 难度2. 算法的时间复杂度取决于()A.问题的规模 B. 待处理数据的初态 C. A和B3.一个算法应该是()。
A.程序B.问题求解步骤的描述C.要满足五个基本特性D.A和C. 4.从逻辑上可以把数据结构分为( C )两大类。
A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构二、判断题1-5:FFFFT 6-10:FFTFT1. 数据元素是数据的最小单位。
( ) 数据元素2. 记录是数据处理的最小单位。
( ) 结构体类型3. 数据的逻辑结构是指数据的各数据项之间的逻辑关系;( )4.算法的优劣与算法描述语言无关,但与所用计算机有关。
( )5.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。
( )6.算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。
( )7.程序一定是算法。
( )8.数据的物理结构是指数据在计算机内的实际存储形式。
( )9. 在顺序存储结构中,有时也存储数据结构中元素之间的关系。
( )10. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。
( )三、填空1.数据的物理结构包括的表示和的表示。
2. 对于给定的n个元素,可以构造出的逻辑结构有,,,四种。
3.数据的逻辑结构是指。
4.一个数据结构在计算机中称为存储结构。
5. 数据结构是研讨数据的和,以及它们之间的相互关系,并对与这种结构定义相应的,设计出相应的。
6.一个算法具有5个特性:、、,有零个或多个输入、有一个或多个输出。
第2章线性表一选择题1.下述哪一条是顺序存储结构的优点?( A )A.存储密度大B.插入运算方便C.删除运算方便D.可方便地用于各种逻辑结构的存储表示2.下面关于线性表的叙述中,错误的是哪一个?( B )A.线性表采用顺序存储,必须占用一片连续的存储单元。
B.线性表采用顺序存储,便于进行插入和删除操作。
C.线性表采用链接存储,不必占用一片连续的存储单元。
D.线性表采用链接存储,便于插入和删除操作。
3.线性表是具有n个( C )的有限序列(n>0)。
A.表元素B.字符C.数据元素D.数据项E.信息项4.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用( A )存储方式最节省时间。
A.顺序表B.双链表C.带头结点的双循环链表D.单循环链表5.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表6.设一个链表最常用的操作是在末尾插入结点和删除尾结点,则选用( D )最节省时间。
A. 单链表n nB.单循环链表C. 带尾指针的单循环链表1 nD.带头结点的双循环链表1 17.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。
则采用(D )存储方式最节省运算时间。
A.单链表B.双链表C.单循环链表D.带头结点的双循环链表8. 若长度为n的线性表采用顺序存储结构,在其第i个位置插入一个新元素的算法的时间复杂度为( C )(1<=i<=n+1)。
A. O(0)B. O(1)C. O(n)D. O(n2)9. 对于顺序存储的线性表,访问结点和增加、删除结点的时间复杂度为( C )。
A.O(n) O(n) B. O(n) O(1) C. O(1) O(n) D. O(1) O(1)10.对于一个头指针为head的带头结点的单链表,判定该表为空表的条件是( B )A.head==NULL B.head→next==NULL C.head→next==head D.head!=NULL二、判断1-5:FTTFF 6-10:FFFFT1. 链表中的头结点仅起到标识的作用。
( )2. 顺序存储结构的主要缺点是不利于插入或删除操作。
( )3.线性表采用链表存储时,结点和结点内部的存储空间可以是不连续的。
( )4.顺序存储方式插入和删除时效率太低,因此它不如链式存储方式好。
( )5. 对任何数据结构链式存储结构一定优于顺序存储结构。
( )6.顺序存储方式只能用于存储线性结构。
( )7. 循环链表不是线性表. ( )8. 线性表只能用顺序存储结构实现。
( )9. 线性表就是顺序存储的表。
( )10. 链表是采用链式存储结构的线性表,进行插入、删除操作时,在链表中比在顺序存储结构中效率高。
( )三、填空1.当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用顺序存储存储结构。
2.线性表L=(a1,a2,…,an)用数组表示,假定删除表中任一元素的概率相同,则删除一个元素平均需要移动元素的个数是(N-1)/2 。
3.设单链表的结点结构为(data,next),next为指针域,已知指针px指向单链表中data为x的结点,指针py指向data为y的新结点, 若将结点y插入结点x之后,则需要执行以下语句:_______ ; ______;4.在一个长度为n的顺序表中第i个元素(1<=i<=n)之前插入一个元素时,需向后移动_______个元素。
5.在单链表中设置头结点的作用是操作统一,另外无论链表是否为空,链表指针不变。
6.在双向循环链表中,向p所指的结点之后插入指针f所指的结点,其操作是_______、_______、_______、________。
7.链接存储的特点是利用________来表示数据元素之间的逻辑关系。
8. 循环单链表的最大优点是:从任一结点出发都可访问到链表中每一个元素。
9. 已知指针p指向单链表L中的某结点,则删除其后继结点的语句是:________ 、、。
10.在单链表L中,指针p所指结点有后继结点的条件是:。
第3章栈和队列一选择题1. 对于栈操作数据的原则是()。
A. 先进先出B.后进先出C. 后进后出D. 不分顺序2. 一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。
A. 不确定B. n-i+1C.iD. n-i3. 若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。
A. i-j-1B. i-jC. j-i+1D.不确定的4. 若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,p N,若p N是n,则p i是( )。
A. iB. n-iC. n-i+1D. 不确定5. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?()A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 66. 设栈的输入序列是1,2,3,4,则()不可能是其出栈序列。
A. 1,2,4,3,B. 2,1,3,4,C. 1,4,3,2,D. 4,3,1,2,E. 3,2,1,4,7. 一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是()。
A. 2 3 4 1 5B. 5 4 1 3 2C. 2 3 1 4 5D. 1 5 4 3 28. 设一个栈的输入序列是1,2,3,4,5,则下列序列中,是栈的合法输出序列的是()。
A. 5 1 2 3 4B. 4 5 1 3 2C. 4 3 1 2 5D. 3 2 1 5 49. 某堆栈的输入序列为a, b,c ,d,下面的四个序列中,不可能是它的输出序列的是()。
A. a,c,b,dB. b, c,d,aC. c, d,b, aD. d, c,a,b10. 设abcdef以所给的次序进栈,若在进栈操作时,允许退栈操作,则下面得不到的序列为()。
A.fedcba B. bcafed C. dcefba D.cabdef11. 设有三个元素X,Y,Z顺序进栈(进的过程中允许出栈),下列得不到的出栈排列是( )。
A.XYZ B. YZX C. ZXY D. ZYX12. 输入序列为ABC,可以变为CBA时,经过的栈操作为()A. push,pop,push,pop,push,popB.push,push,push,pop,pop,popC. push,push,pop,pop,push,popD. push,pop,push,push,pop,pop13. 若一个栈以向量V[1..n]存储,初始栈顶指针top为n+1,则下面x进栈的正确操作是( )。
A.top:=top+1; V [top]:=x B. V [top]:=x; top:=top+1C. top:=top-1; V [top]:=xD. V [top]:=x; top:=top-114. 若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈( i =1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。
A. |top[2]-top[1]|=0B.top[1]+1=top[2]C. top[1]+top[2]=mD. top[1]=top[2]15. 栈在()中应用。
A. 递归调用B. 子程序调用C. 表达式求值D. ABC16. 一个递归算法必须包括()。
A. 递归部分B. 终止条件和递归部分C. 迭代部分D.终止条件和迭代部分17. 表达式a*(b+c)-d的后缀表达式是( )。
A.abcd*+- B. abc+*d- C. abc*+d- D. -+*abcd18. 设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。
A.线性表的顺序存储结构 B. 队列 C. 线性表的链式存储结构 D.栈19. 用链接方式存储的队列,在进行删除运算时()。
A. 仅修改头指针B. 仅修改尾指针C. 头、尾指针都要修改D.头、尾指针可能都要修改20. 递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。
A.队列B.多维数组C.栈 D. 线性表21. 假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。
A.(rear-front+m)%m B.rear-front+1C.(front-rear+m)%m D.(rear-front)%m22. 循环队列存储在数组A[0..m]中,则入队时的操作为()。
A. rear=rear+1B. rear=(rear+1) mod (m-1)C. rear=(rear+1) mod mD. rear=(rear+1)mod(m+1)23. 若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?( )A. 1和5B. 2和4C. 4和2D. 5和124. 栈和队列的共同点是()。