数据结构与算法1.docx

上传人:牧羊曲112 文档编号:5306592 上传时间:2023-06-24 格式:DOCX 页数:29 大小:255.33KB
返回 下载 相关 举报
数据结构与算法1.docx_第1页
第1页 / 共29页
数据结构与算法1.docx_第2页
第2页 / 共29页
数据结构与算法1.docx_第3页
第3页 / 共29页
数据结构与算法1.docx_第4页
第4页 / 共29页
数据结构与算法1.docx_第5页
第5页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据结构与算法1.docx》由会员分享,可在线阅读,更多相关《数据结构与算法1.docx(29页珍藏版)》请在三一办公上搜索。

1、单元练习1一. 判断题(下列各题,正确的请在前面的括号内打V;错误的打x)()(1)数据的逻辑结构与数据元素本身的内容和形式无关。(V)(2) 一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。(乂)(3)数据元素是数据的最小单位。(乂)(4)数据的逻辑结构和数据的存储结构是相同的。(乂)(5)程序和算法原则上没有区别,所以在讨论数据结构时可以通用。(V) (6)从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。(V) (7)数据的存储结构是数据的逻辑结构的存储映像。(V) (8)数据的物理结构是指数据在计算机内实际的存储形式。(乂)(9)数据的逻辑结构是依赖于计

2、算机的。(V) (10)算法是对解题方法和步骤的描述。二填空题(1) 数据有逻辑结构和 存储结构 两种结构。(2) 数据逻辑结构除了集合以外,还包括:线性结构、树形结构和 图形结构。(3) 数据结构按逻辑结构可分为两大类,它们是线性结构和非线性结构 。(4) 树形结构 和 图形结构 合称为非线性结构。(5) 在树形结构中,除了树根结点以外,其余每个结点只有_ 个前趋结点。(6) 在图形结构中,每个结点的前趋结点数和后续结点数可以任意多个 。(7) 数据的存储结构又叫 物理结构。(8) 数据的存储结构形式包括:顺序存储、链式存储、索引存储和 散列存储 。(9) 线性结构中的元素之间存在一对一 的

3、关系。(10) 树形结构结构中的元素之间存在 一对多的关系,(11) 图形结构的元素之间存在 多对多的关系。(12) 数据结构主要研究数据的逻辑结构、存储结构和算法(或运算) 三个方面的内容。(13) 数据结构被定义为(D,R),其中D是数据的有限集合,R是D上的 关系 的有限集合。(14) 算法是一个有穷指令的集合。(15) 算法效率的度量可以分为事先估算法和事后统计法 。(16) 一个算法的时间复杂性是算法 输入规模 的函数。(17) 算法的空间复杂度是指该算法所耗费的 存储空间,它是该算法求解问题规模n的函数。(18) 若一个算法中的语句频度之和为T (n) =6n+3nlog2n,则算

4、法的时间复杂度为O (nlog尹)。(19) 若一个算法中的语句频度之和为T (n) =3n+nlog2n+n2,则算法的时间复杂度为O(n2)。(20) 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象,以及它们之间的关系和 运算的学科。三. 选择题(1) 数据结构通常是研究数据的(A )及它们之间的相互联系。A. 存储结构和逻辑结构 B.存储和抽象C.联系和抽象 D.联系与逻辑(2) 在逻辑上可以把数据结构分成:(C )。A. 动态结构和静态结构B.紧凑结构和非紧凑结构C,线性结构和非线性结构D.内部结构和外部结构(3) 数据在计算机存储器内表示时,物理地址和逻辑地址相同并且是

5、连续的,称之为(C )。A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构(4) 非线性结构中的每个结点(D )。A. 无直接前趋结点B. 无直接后继结点C. 只有一个直接前趋结点和一个直接后继结点D. 可能有多个直接前趋结点和多个直接后继结点(5) 链式存储的存储结构所占存储空间(A )。A. 分两部分,一部分存放结点的值,另一部分存放表示结点间关系的指针B. 只有一部分,存放结点的值C. 只有一部分,存储表示结点间关系的指针D. 分两部分,一部分存放结点的值,另一部分存放结点所占单元素(6) 算法的计算量大小称为算法的(C )。A.现实性B.难度C,时间复杂性D.效率(7) 数据的基

6、本单位是(B )。A.数据结构B.数据元素C.数据项D.文件(8) 每个结点只含有一个数据元素,所有存储结点相继存放在一个连续的存储区里,这种存储结构称为(A ) 结构。A.顺序存储B.链式存储C.索引存储 D.散列存储(9) 每一个存储结点不仅含有一个数据元素,还包含一组指针,该存储方式是(B )存储方式。A.顺序B.链式C,索引(10) 以下任何两个结点之间都没有逻辑关系的是(D )。A,图形结构B,线性结构C,树形结构(11) 在数据结构中,与所使用的计算机无关的是(C )。A.物理结构B.存储结构C.逻辑结构(12) 下列四种基本逻辑结构中,数据元素之间关系最弱的是(AA.集合B.线性

7、结构C.树形结构D.散列)。D.D.D.集合逻辑和存储结构图形结构C. 健壮性D. 高效性C. O (log2n)D. O (n2)C. O (log2n)D. O (n2)B.正确性和简明性D. 数据复杂性和程序复杂性)。B.排序方法D.程序设计方法(13) 与数据元素本身的形式、内容、相对位置、个数无关的是数据的(A )。A.逻辑结构 B.存储结构 C.逻辑实现D.存储实现(14) 每一个存储结点只含有一个数据元素,存储结点存放在连续的存储空间,另外有一组指明结点存储位置 的表,该存储方式是(C )存储方式。A.顺序B.链式C.索引D,散列(15) 算法能正确的实现预定功能的特性称为算法的

8、(A )。A.正确性B.易读性C,健壮性D.高效性(16) 算法在发生非法操作时可以作出处理的特性称为算法的(C )。A.正确性B.易读性(17) 下列时间复杂度中最坏的是(D )。A. O (1)B. O ( n)(18) 下列算法的时间复杂度是(D )。for (i=0;in;i+)for (j=0;in;j+)cij=i+j;A. O(1)B. O( n)(19) 算法分析的两个主要方面是(A )。A. 空间复杂性和时间复杂性C.可读性和文档性(20) 计算机算法必须具备输入、输出和(CA. 计算方法C,解决问题的有限运算步骤四. 分析下面各程序段的时间复杂度(1) for (i=0;i

9、n;i+)for (j=0;jm;j+)解:0(n*m)(2) s=0;for (i=0:in;i+)for (j=0;jn;j+)s+=Bij;sum=s;解:0(n2)(3) T=A;A=B;B=T;解:0(4) si (int n) int. p=l, s=0;for (i=l;i=n;i+) p*=i;s+=p; return (s);0(n)(5) s2(int n)x=0;y=0;for (k=l;k=n;k+)x+;for (i=l;i=n;i+)for (j=l:j, , vc,d, , (尖括号表示结点之间关系是有向的)解:3. 根据二元组关系画出逻辑图形,并指出它们属于何种

10、数据结构。F= (D, R),其中:D=50, 25, 64, 57, 82, 36, 75, 55,R=,解:属于树结构4. 根据二元组关系画出逻辑图形,并指出它们属于何种数据结构。C= (D, R),其中:D=1, 2, 3, 4, 5, 6,R= (1,2) , (2,3) , (2,4) , (3,4) , (3,5) , (3,6) , (4,5) , (4,6) (园括号表示结点之间关系是有向的)解:属于图结构5. 根据二元组关系画出逻辑图形,并指出它们属于何种数据结构。E= (D, R),其中:D=a, b, c, d, e, f, g, h,R=, , , , , , 解:模拟

11、考题1.根据二元组关系画出逻辑图形,并指出它们属于何种数据结构。A= (D, R),其中:D=1, 2, 3, 4, 5, 6,R= (1,2) , (1,6) , (2,3) , (2,4),2.根据二元组关系画出逻辑图形,并指出它们属于何种数据结构。B= (D, R),其中:D=40, 30, 20, 60, 50, 80, 70, 10,R=,3.根据二元组关系画出逻辑图形,并指出它们属于何种数据结构。C= (D, R),其中:D=1, 2, 3, 4, 5, 6,R= (1,2) , (2,3) , (2,4) , (3,4),(3,5),(3,6),(4,5),(4,6)解:属于图结

12、构4.根据二元组关系画出逻辑图形,并指出它们属于何种数据结构。E= (D, R),其中:D=a, b, c, d, e, f, g, h,R=,解:属于树结构单元练习2一. 判断题(下列各题,正确的请在前面的括号内打/;错误的打X)(X)(1)线性表的链式存储结构优于顺序存储。(X) (2)链表的每个结点都恰好包含一个指针域。()(3)在线性表的链式存储结构中,逻辑上相邻的两个元素在物理位置上并不一定紧邻。(X) (4)顺序存储方式的优点是存储密度大,插入、删除效率高。(X) (5)线性链表的删除算法简单,因为当删除链中某个结点后,计算机会自动地将后续的各个单元向前移 动。(X) (6)顺序表

13、的每个结点只能是一个简单类型,而链表的每个结点可以是一个复杂类型。()(7)线性表链式存储的特点是可以用一组任意的存储单元存储表中的数据元素。()(8)线性表采用顺序存储,必须占用一片连续的存储单元。(X) (9)顺序表结构适宜于进行顺序存取,而链表适宜于进行随机存取。(乂)(10)插入和删除操作是数据结构中最基本的两种操作,所以这两种操作在数组中也经常使用。二. 填空题(1) 顺序表中逻辑上相邻的元素在物理位置上必须 相连。(2) 线性表中结点的集合是有限的,结点间的关系是一对一关系。(3) 顺序表相对于链表的优点是:节省存储 和随机存取。(4) 链表相对于顺序表的优点是:插入、删除方便。(

14、5)采用顺序存储结构的线性表叫顺序表。(6)顺序表中访问任意一个结点的时间复杂度均为O(1)。(7) 链表相对于顺序表的优点是插入、删除方便:缺点是存储密度 小 。(8) 在双链表中要删除已知结点*?,其时间复杂度为O(1)。(9) 在单链表中要在已知结点*P之前插入一个新结点,需找到*P的直接前趋结点的地址,其查找的时间复 杂度为Oln)。(10)单链表中需知道 头指针 才能遍历整个链表。(11) 性表中第一个结点没有直接前趋,称为 开始 结点。(12)在一个长度为n的顺序表中删除第i个元素,要移动 n-i 个元素。(13) 在一个长度为n的顺序表中,如果要在第i个元素前插入一个元素,要后移

15、n- i +1个元素。(14)在无头结点的单链表中,第一个结点的地址存放在头指针中,而其它结点的存储地址存放在前_结 点的指针域中。(15)当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快速度存取线性表中的元素 时,应采用 顺序 存储结构。(16) 在线性表的链式存储中,元素之间的逻辑关系是通过指针 决定的。(17) 在双向链表中,每个结点都有两个指针域,它们一个指向其前趋 结点,另一个指向其 后继结 点。(18) 对一个需要经常进行插入和删除操作的线性表,采用链式存储结构为宜。(19) 双链表中,设p是指向其中待删除的结点,则需要执行的操作为:p-prior-next=p-

16、next。(20)在如图所示的链表中,若在指针P所在的结点之后插入 数据域值为a和b的两个结点,则可用 下列两个 语句: S-next-next=P-next; 和P-next=S; 来实现该 操作。三. 选择题(1)在具有n个结点的单链表中,实现(AA. 遍历链表或求链表的第i个结点C.删除开始结点)的操作,其算法的时间复杂度都是O (n)。B .在地址为P的结点之后插入一个结点D.删除地址为P的结点的后继结点(2)设a、b、c为三个结点,p、10、20分别代表它们的地址,则如下的存储结构称为(B )。A.循环链表B.单链表。双向循环链表D.双向链表(3)单链表的存储密度(C )。A.大于1

17、B.等于1C.小于1D.不能确定(4)已知一个顺序存储的线性表,设每个结点占m个存储单元,若第一个结点的地址为B,则第i个结点的地址为(A )。A. B+(i-1)*mB. B+i*mC. B-i*mD. B+(i+1)*m(5) 在有n个结点的顺序表上做插入、删除结点运算的时间复杂度为(B )。A. O (1)B. O (n)C. O (n2)D. O (log2n)(6) 设Llink、Rlink分别为循环双链表结点的左指针和右指针,则指针P所指的元素是双循环链表L的尾元 素的条件是(D )。A. P= LB. P-Llink= LC. P= NULLD. P-Rlink=L(7) 两个指

18、针P和Q,分别指向单链表的两个元素,P所指元素是Q所指元素前驱的条件是(B )。A. P-next=Q-nextB. P-next= QC. Q-next= P D. P= Q(8) 用链表存储的线性表,其优点是(C )。B.花费的存储空间比顺序表少D.数据元素的物理顺序与逻辑顺序相同A.便于随机存取C.便于插入和删除(9) 在单链表中,增加头结点的目的是(C )。B.标志表中首结点的位置D.说明该单链表是线性表的链式存储结构)关系。B.顺序表可以随机存取任一元素D.链表可以随机存取任一元素经 DelList (L,2)运算后,LengthList (L)的值是(C )C. 4D. 5A.使单

19、链表至少有一个结点C.方便运算的实现(10) 下面关于线性表的叙述中,错误的是(DA.顺序表必须占一片地址连续的存储单元 C.链表不必占用一片地址连续的存储单元(11) L是线性表,已知LengthList (L)的值是5A. 2B. 3(12) 单链表的示意图如下:L指向链表Q结点的前趋的指针是(B )。A. LB. PC. QD. R(13) 设p为指向单循环链表上某结点的指针,则*p的直接前驱(C )。A.找不到B.查找时间复杂度为O (1)C.查找时间复杂度为O(n)D.查找结点的次数约为n(14) 等概率情况下,在有n个结点的顺序表上做插入结点运算,需平均移动结点的数目为(C )。A

20、. nB. (n-1)/2C. n/2D. (n+1)/2(15) 在下列链表中不能从当前结点出发访问到其余各结点的是(C )。A-双向链表B.单循环链表C.单链表。.双向循环链表(16) 在顺序表中,只要知道(D ),就可以求出任一结点的存储地址。A.基地址B.结点大小C.向量大小D.基地址和结点大小(17) 在双链表中做插入运算的时间复杂度为(A )。A. O (1)B. O (n)C. O (n2)D. O (log2n)(18) 链表不具备的特点是(A )。A.随机访问B.不必事先估计存储空间口插入删除时不需移动元素D.所需空间与线性表成正比(19 )以下关于线性表的论述,不正确的为(

21、C )。A. 线性表中的元素可以是数字、字符、记录等不同类型B. 线性顺序表中包含的元素个数不是任意的C. 线性表中的每个结点都有且仅有一个直接前趋和一个直接后继D. 存在这样的线性表,即表中没有任何结点(20)在(B )的运算中,使用顺序表比链表好。A-插入B.根据序号查找 C.删除D.根据元素查找四. 程序填空1. 已知线性表中的元素是无序的,并以带表头结点的单链表作存储。试写一算法,删除表中所有大于min, 小于max的元素,试完成下列程序填空。Void delete (Iklist head; datatype min, max)( q=head-next;while (p!=NULL

22、)( if (p-datadata=max )q=p; p=; else q-next= p-next ;delete (p);p= q-next ; 2. 在带头结点head的单链表的结点a之后插入新元素x,试完成下列程序填空。struct node elemtype data;node *next;;void Ikinsert (node *head, elemtype x) node *s, *p;s= new node;s-data=x;p=head-next;while (p!=NULL) & ( p-data!=a )p=pnext;if (p=NULL)coutlast= =MA

23、XLEN-1) cout 顺序表已满! ; return(-1);if( iL-last+2 )/检查插入位置的正确性 coutlast; j=i-1 ; j-)/ 结点移动L-dataj+1=L-dataj ; L-Latai-1=x ;/ 新结点插入L-last +;(或 L-last= L-last +1)return(1); 2. 一个带头指针的单链表,写出在值为x的结点之后插入m个结点的算法。void insertm (lklist head; int m) p=head-next;while (p!=NULL) & ( p-data!=x ) p= p-next ; if ( p-

24、data=x ) q=p-next;for ( i=0; im ; i+ )/找到x,在其后插入口个结点 s=new (node); cindata=a ; p-next=s; p=s; p-next=q; 3. 有两个循环单链表,头指针分别为head1和head2,下列函数是将链表head1链接到链表head2,链接后 的链表仍然是循环链表,试完成下列程序填空。(提示:先找到两链表的尾指针,再将第一个链表的尾指针与第二个链表的头结点链接起来) node *link (node *head1, node *head2) node *p, *q; p=head1; while (p-next!=

25、head1)p= p-next ;q= head2 ;while (q-next !=head2 )q=q-next;p-next=head2;q-next=headl;return (headl);单元练习3一. 判断题(下列各题,正确的请在前面的括号内打V;错误的打X)()(1)栈是运算受 限制的线性表。(V) (2)在栈空的情况下,不能作出栈操作,否则产生下溢出。(乂)(3)栈一定是顺序存储的线性结构。(V) (4)栈的特点是“后进先出”。(乂)(5)空栈就是所有元素都为0的栈。(乂)(6)在C或C+语言中设顺序栈的长度为MAXLEN,贝top=MAXLEN时表示队满。(V) (7)链栈

26、与顺序 栈相比,其特点之一是通常不会出现栈满的情况。(乂)(8) 一个栈的输入序列为:A, B, C, D,可以得到输出序列:C, A, B, D。(乂)(9)递归定义就 是循环定义。(V) (10 )将十进制 数转换为二进制数是栈的典型应用之一。二. 填空题(1) 在栈结构中,允许插入、删除的一端称为 栈顶 。(2) 在顺序栈中,当栈顶指针top =-1时,表示 栈空 。(3) 在有n个元素的栈中,进栈操作的时间复杂度为 O (1)。(4) 在栈中,出栈操作的时间复杂度为:0(1)。(5) 已知表达式,求它的后缀表达式是栈 的典型应用。(6) 在一个链栈中,若栈顶指针等于 NULL,则表示

27、栈空 。(7) 向一个栈顶指针为top的链栈插入一个新结点*p时,应执行 p-next=top :和top=p ; 操 作。(8) 顺序栈S存储在数组S-data0.MAXLEN-1中,进栈操作时要执行的语句有:S-top+。(或=S- top+1 )(9) 链栈LS,指向栈顶元素的指针是LS-next 。(10) 从一个栈删除元素时,首先取出栈顶元素,然后再移动栈顶指针。(11) 由于链栈的操作只在链表的头部进行,所以没有必要设置 头 结点。(12) 已知顺序栈S,在对S进行进栈操作之前首先要判断 栈是否满。(13) 已知顺序栈S,在对S进行出栈操作之前首先要判断 栈是否空。(14) 若内存

28、空间充足,链栈可以不定义栈满运算。(15 )链栈LS是空的条件是LS-next=NULL 。(16 )链栈LS的栈顶元素是链表的首 元素。(17 )同一栈的各元素的类型相同 。(18) 若进栈的次序是A、B、C、D、E,执行三次出栈操作以后,栈顶元素为。(19) A+B/C-D*E 的后缀表达式是:ABC/+DE*-。(20) 四个元素按A、B、C、D顺序进S栈,执行两次Pop(S,x)运算后,x的值是 C 。三. 选择题(1) 插入和删除只能在一端进行的线性表,称为(C )。A.队列 B.循环队列 C.栈D.循环栈(2) 设有编号为1,2,3,4的四辆列车,顺序进入一个栈结构的站台,下列不可

29、能的出站顺序为 (D )A . 1234 B . 1243C . 1324D . 1423(3) 如果以链表作为栈的存储结构,则出栈操作时(B )A.必须判别栈是否满B.必须判别栈是否空C .必须判别栈元素类型D.队栈可不做任何判别(4) 元素A,B,C,D依次进栈以后,栈顶元素是(D )A. AB. BC. CD . D(5) 顺序栈存储空间的实现使用(B )存储栈元素。A.链表 B.数组C.循环链表 D.变量(6) 在C或C+语言中,一个顺序栈一旦被声明,其占用空间的大小(A )。A.已固定 B.不固定C .可以改变 D.动态变化(7) 带头结点的链栈LS的示意图如下,栈顶元素是(A )L

30、SHABCDAA. AB. BC. CD. D(8) 链栈与顺序栈相比,有一个比较明显的优点是(B )。A-插入操作更加方便B .通常不会出现栈满的情况。C.不会出现栈空的情况D.删除操作根加方便(9) 从一个栈顶指针为top的链栈中删除一个结点时,用x保存被删除的结点,应执行下列(D ) 命令。A.x=top;top=top-next;B.top=top-next;x=top-data;C.x=top-data;D.x=top-data;top=top-next;(10 )在一个栈顶指针为HS的链栈中,将一个S指针所指的结点入栈,应执行下列(B )命令。A .HS-next=S;B.S-ne

31、xt=HS-next;HS-next=S;C .S-next=HS-next;HS=S;D.S-next=HS;HS=HS-next;(11 )四个元素按A、B、C、D顺序进S栈,执行两次Pop (S,x)运算后,栈顶元素的值是(B )。A . AB. BC. CD. D(12 )元素A,B,C,D依次进栈以后,栈底元素是(A )。A. AB. BC. CD. D(13 )经过下列栈的运算后,再执行ReadTop(s)的值是(A )。InitStack(s)(初始化栈);Push(s,a);Push(s,b); Pop(s)A. aB.bC.1D.0(14 )经过下列栈的运算后,x的值是(B

32、)。InitStack(s) (初始化栈);Push(s,a);Push(s,b); ReadTop(s);Pop(s,x);A. aB. bC. 1D. 0(15 )经过下列栈的运算后,x的值是(B )。InitStack(s) (初始化栈);Push(s,a);Pop(s,x);Push(s,b);Pop(s,x);A. aB. bC. 1D. 0(16 )经过下列栈的运算后,SEmpty(s)的值是(C )。InitStack(s) (初始化栈);Push(s,a); Push(s,b);Pop(s,x); Pop(s,x);A. aB. bC. 1D. 0(17 )向顺序栈中压入元素时

33、,(B )。A.先存入元素,后移动栈顶指针 B .先移动栈顶指针,后存入元素C.谁先谁后无关紧要D.同时进行(18 )初始化一个空间大小为5的顺序栈S后,S-top的值是(B )。A. 0B . -1C .不再改变D.动态变化(19) 一个栈的入栈次序ABCDE,则栈的不可能的输出序列是(C )。A. EDCBA B . DECBAC . DCEABD . ABCDE(20 )设有一个顺序栈S,元素A,B,C,D,E,F,依次进栈,如果六个元素出栈的顺序是B,D,C,F,E, A,则栈的容量至少应是(A )。A. 3B. 4C. 5D. 6四. 设有一个栈,元素进栈的次序为:A,B,C,D,E

34、,用1表示进栈操作,O表示出栈操 作,写出下列出栈的操作序列。(1) C, B, A, D, E(2) A, C, B, E, D解:(1) IIIOOOIOIO(2) IOIIOOIIOO五. 求后缀表达式(1) ABC/D(2) -A+B*C+D/E(3) A*(B+C)*D-E(4) (A+B)*C-E/(F+G/H)-D(5) 8/(5+2)-6解:(1)ABCD/(2)0A_BC*+D E / +(3)ABC+*D*E -(4)AB+C*EFG H / + /- D(5)852+/6-模拟考题求后缀表达式1. 求下列表达式:A/B A C+D*E-A*C的后缀表达式。 解: A B

35、C A / D E * + A C * -2. 求下列表达式:A/B-C+D*E-F 的后缀表达式。解: A B/ C - D E * +F -写出运行下列程序段的输出结果 void main() Stack S; char x,y; InitStack(S);/初始化栈x= c ; y= k ; Push(S,x); Push(S, a ); Push(S,y); Pop(S,x); Push(S, t ); Push(S,x); Pop(S,x); Push(S, s ); While (!SEmpty(S) Pop(S,y);couty; ; coutx;答:stack 程序填空1.下列

36、程序是判别一个算术表达式(存在字符数组a中)的圆括号配对是否正确?试填空完成下列程序。int correct(char a) stack s ;InitStack(s);for (i=0; istrlen(a); i+)if (ai=( )Push (s,();else if (ai=)if SEmpty (s)return 0;elsePop(s);if (SEmpty(s)cout 配对正确!;elsecout 配对错误!;/初始化栈/若栈为空返回0;否则出栈/ printf (配对正确!);/ printf (配对错误!);单元测验4一.判断题(下列各题,正确的请在前面的括号内打V;错误

37、的打x) ()(1)队列是限制 在两端进行操作的线性表。(V) (2)判断顺序队 列为空的标准是头指针和尾指针 都指向同一个结点。(X) (3)在链队列上做出队操作时,会改变fron t指针的值。()(4)在循环队列中,若尾指针rear大于头指针front,其元素个数为rear- front。(X) (5)在单向循环链表中,若头指针为h,那么p所指结点为尾结点的条件是p=h。()(6)链队列在一定范围内不会出现队满的情况。(X) (7)在循环链队列中无溢出现象。(X) (8)栈和队列都是顺序存储的线性结构。(X) (9)在队列中允 许删除的一端称为队尾。(X) (10 )顺序队和 循环队关于队

38、满和队空的判断条件是一样的。二. 填空题(1) 在队列中存取数据应遵循的原则是先进先出。(2) 队列是被限定为只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。(3) 在队列中,允许插入的一端称为队尾 。(4) 在队列中,允许删除的一端称为队首(或队头) 。(5) 队列在进行出队操作时,首先要判断队列是否为空 。(6) 顺序队列在进行入队操作时,首先要判断队列是否为满 。(7) 顺序队列初始化后,front=rear= -1。(8) 解决顺序队列“假溢出”的方法是采用循环队列 。(9) 循环队列的队首指针为front,队尾指针为rear,则队空的条件为 front = rear 。

39、(10 )链队列 LQ为空时,LQ-front-next= NULL。(11) 设长度为n的链队列用单循环链表表示,若只设头指针,则入队操作的时间复杂度为O(n)。(12 )设长度为n的链队列用单循环链表表示,若只设尾指针,则出队操作的时间复杂度为0(1)。(13 )在一个链队列中,若队首指针与队尾指针的值相同,则表示该队列为空 。(14 )设循环队列的头指针front指向队首元素,尾指针rear指向队尾元素后的一个空闲元素,队列 的最大空间为MAXLEN,则队满标志为:front=(rear+1)%MAXLEN 。(15 )在一个链队列中,若队首指针为 front,队尾指针为rear,则判断

40、该队列只有一个结点的条件 为: front=rear & front !NULL。( 或 front=rear & front NULL )(16) 向一个循环队列中插入元素时,首先要判断队尾指针,然后再向指针所指的位詈写入新的数据。(17) 读队首元素的操作不改变(或不影响)队列元素的个数。(18) 设循环队列的容量为40(序号从0到39),现经过一系列的入队和出队运算后,有front=11,rear=19,则循环队列中还有8 个元素。(L= (N+rearfront)% N= (40 + 19 11) % 40=8)(19 )队列 Q,经过下列运算:InitQueue(Q)( 初始化队列)

41、;InQueue(Q,a);InQueue(Q,b);OutQueue(Q,x); ReadFront(Q,x);QEmpty(Q); 后的值是 0。(20) 队列 Q 经过 InitQueue(Q)(初始化队列);InQueue(Q,a);InQueue(Q,b); ReadFront(Q,x)后,x 的值是 a。三选择题(1) 队列是限定在(D )进行操作的线性表。A. 中间B.队首C.队尾(2) 队列中的元素个数是(B )。A .不变的B .可变的C.任意的D. 0(3)同一队列内各元素的类型(A)。A .必须一致B .不能一致C.可以不一致D.不限制(4)队列是一个(C )线性表结构。A .不加限制的B .推广了的C-加了限制的D. 非(5)当利用大小为n的数组顺序存储一个队列时,该队列的最后-一个元素的下标为A .n-2B . n-1C. nD .

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号