第一章 绪论 第一章绪论单元测试

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、 问题:数据在计算机的存储器中表示时,逻辑上相邻的两个元素对应的物理地址也是相邻的,这种存储结构称之为 ______。
选项:
A:路基结构
B:顺序存储结构
C:链式存储结构
D:以上都对
答案: 【顺序存储结构

16、 问题:数据采用链式存储结构时,要求 ______。
选项:
A:每个节点占用一片连续的存储区域
B:所有节点占用一片连续的存储区域
C:节点的最后一个数据域是指针类型
D:每个节点有多少个后继就设多少个指针域
答案: 【每个节点占用一片连续的存储区域

17、 问题:数据的运算 ______。
选项:
A:是根据存储结构来定义的效率
B:与采用何种存储结构有关
C:有算术运算和关系运算两大类
D:必须用程序设计语言来描述
答案: 【与采用何种存储结构有关

18、 问题:_ 不是算法的基本特性。
选项:
A:可行性
B:指令序列长度有限
C:在规定的时间内完成
D:确定性
答案: 【在规定的时间内完成

19、 问题:计算机中算法指的是解决某一问题的有限运算序列,它必须具备输入、输出、_
选项:
A:可行性、可移植性和可扩充性
B:可行性、有穷性和确定性
C:确定性、有穷性和稳定性
D:易读性、稳定性和确定性
答案: 【可行性、有穷性和确定性

20、 问题:一个算法具有 __ 等设计目标。
选项:
A:可行性
B:至少有一个输入
C:确定性
D:健壮性
答案: 【健壮性

21、 问题:以下关于算法的说法正确的是 ______。
选项:
A:算法最终必须由计算机程序实现
B:算法等同于程序
C:算法的可行性是指指令不能有二义性
D:其他几个都是错误的
答案: 【其他几个都是错误的

22、 问题:算法的时间复杂度与 _ 有关。
选项:
A:问题规模
B:计算机硬件性能
C:编译程序质量
D:程序设计语言
答案: 【问题规模

23、 问题:算法分析的主要任务之一是分析 _
选项:
A:算法是否具有较好地可读性
B:算法中是否存在语法错误
C:算法的功能是否符合设计要求
D:算法的执行时间和问题规模之间的关系
答案: 【算法的执行时间和问题规模之间的关系

24、 问题:算法的时间复杂度为O(n2),表明该算法的 _
选项:
A:问题规模是
B:执行时间等于
C:执行时间与成正比
D:问题规模与成正比
答案: 【执行时间与成正比

25、 问题:算法分析的目的是 _
选项:
A:找出数据结构的合理性
B:研究算法中输入和输出的关系
C:分析算法的效率以求改进
D:分析算法的易读性和文档性
答案: 【分析算法的效率以求改进

26、 问题:以下函数中时间复杂度最小的是 _
选项:
A:T1(n)=nlog2n+5000n
B:T2(n)=-8000n
C:T3(n)=-6000n
D:T4(n)=20000log2n
答案: 【T4(n)=20000log2n

27、 问题:以下函数中时间复杂度最小的是 _
选项:
A:T1(n)=1000log2n
B:T2(n)=-1000log2n
C:T3(n)=– 1000log2n
D:T4(n)=2nlog2n-1000log2n
答案: 【T1(n)=1000log2n

28、 问题:以下说法中错误的是 _。(1)原地工作算法的含义是指不需要任何额外的辅助空间(2)在相同的问题规模下n下,时间复杂度为O(nlog2n)的算法在执行时间上总是优于时间复杂度为O()的算法(3)时间复杂度通常是指最坏情况下,估计算法执行时间的一个上限(4)一个算法的时间复杂度与实现算法的语言无关
选项:
A:(1)
B:(1)、(2)
C:(1)、(4)
D:(3)
答案: 【(1)、(2)

29、 问题:以下数据结构中哪一个是非线性结构?
选项:
A:队列
B:栈
C:线性表
D:二叉树
答案: 【二叉树

30、 问题:下面程序的时间复杂为 _。for(i=1,s=0; i<=n; i++) {t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;}
选项:
A:O(n)
B:O()
C:O( )
D:O()
答案: 【O()

31、 问题:一个算法的时间复杂度为(+log2n+14n)/,其数量级表示为 _
选项:
A:O(n)
B:O()
C:O()
D:O()
答案: 【O(n)

32、 问题:取算法的时间复杂度为O(),当n=5时执行时间为50s,当n=15时,执行时间为_
选项:
A:3375
B:1350
C:2025
D:675
答案: 【1350

33、 问题:下面程序的时间复杂度为 _。void fun( int n) { int i=1; while (i<=n) i=i*2}
选项:
A:O(n)
B:O()
C:O(log2n)
D:O(nlog2n)
答案: 【O(log2n)

34、 问题:下面程序的时间复杂度为 _。void fun( int n) { int i=1; while (i<=n) i=i*3}
选项:
A:O(n)
B:O()
C:O(nlog3n)
D:O(log3n)
答案: 【O(log3n)

35、 问题:下面程序的时间复杂度为 _。void fun( int n) { int i=1, k=100; while (i<=n) {k++; i+=2;} }
选项:
A:O(n)
B:O()
C:O(log2n)
D:O(nlog2n)
答案: 【O(n)

36、 问题:数据元素是数据的最小单位。
选项:
A:正确
B:错误
答案: 【错误

37、 问题:数据对象就是一组任意数据元素的集合。
选项:
A:正确
B:错误
答案: 【错误

38、 问题:任何数据结构都具备3个基本运算:插入、删除、和查找。
选项:
A:正确
B:错误
答案: 【错误

39、 问题:数据的逻辑结构与数据元素在计算机中如何存储有关。
选项:
A:正确
B:错误
答案: 【错误

40、 问题:如果数据元素值发生改变,则数据的逻辑结构也随之改变。
选项:
A:正确
B:错误
答案: 【错误

41、 问题:逻辑结构相同的数据,可以采用多种不同的存储方法。
选项:
A:正确
B:错误
答案: 【正确

42、 问题:逻辑结构不相同的数据,必须采用多种不同的存储方法。
选项:
A:正确
B:错误
答案: 【错误

43、 问题:逻辑结构相同的数据,在设计存储结构时,它们的节点类型也一定相同。
选项:
A:正确
B:错误
答案: 【错误

44、 问题:数据的逻辑结构时指数据的各数据项之间的逻辑关系。
选项:
A:正确
B:错误
答案: 【错误

45、 问题:算法的优劣与算法描述语言无关,但与所用的计算机有关。
选项:
A:正确
B:错误
答案: 【错误

46、 问题:算法可以用不同的语言描述,如果用C或PASCAL语言等高级语言来描述,则算法实际上就是程序了。
选项:
A:正确
B:错误
答案: 【错误

47、 问题:程序一定是算法。
选项:
A:正确
B:错误
答案: 【错误

48、 问题:算法最终必须由计算机程序实现.
选项:
A:正确
B:错误
答案: 【错误

49、 问题:算法的可行性是指指令不能有二义性。
选项:
A:正确
B:错误
答案: 【错误

50、 问题:健壮的算法不会因非法输入数据而出现莫名其妙的状态。
选项:
A:正确
B:错误
答案: 【正确

第二章 线性表 第二章线性表单元测试

1、 问题:线性表是具有n个 ______ 的有限序列。
选项:
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、 问题:设线性表有n个元素,以下操作中,_在顺序表上实现比在链表上实现效率高。
选项:
A:输入第i(1<=i<=n)个元素值
B:交换第1个元素第2个元素的值
C:顺序输出这n个元素的值
D:输出与给定值x相等的元素在线性表中的符号
答案: 【输入第i(1<=i<=n)个元素值

9、 问题:对于一个线性表,既要求能够较快地进行插入和删除操作,又要求存储结构能够反映数据元素之间的逻辑关系,则应采用 _ 存储结构。
选项:
A:顺序
B:链式
C:散列
D:索引
答案: 【链式

10、 问题:设线性表中有n个元素,以下操作,_ 在单链表上实现要比在顺序表上实现效率高。
选项:
A:删除指定位置元素的后一个元素
B:在第n个元素的后面插入一个新元素
C:顺序输出前k个元素
D:交换第i个元素和第n-i+1个元素的值
答案: 【删除指定位置元素的后一个元素

11、 问题:以下属于顺序表的优点是 _
选项:
A:插入元素方便
B:删除元素方便
C:存储密度大
D:以上都不对
答案: 【存储密度大

12、 问题:要求线性表采用静态空间分配方式,且插入和删除操作时不需要移动元素,采用的存储结构是 _
选项:
A:单链表
B:静态链表
C:双链表
D:顺序表
答案: 【静态链表

13、 问题:如果最常用的操作时取第i个元素及前驱元素,则采用 _ 存储方式最节省时间。
选项:
A:单链表
B:双链表
C:循环单链表
D:顺序表
答案: 【顺序表

14、 问题:与单链表相比,双链表的优点之一是 _
选项:
A:插入、删除操作更简单
B:可以进行随机访问
C:可以省略表头指针或表尾指针
D:访问前后相邻节点更方便
答案: 【访问前后相邻节点更方便

15、 问题:在长度为n的顺序表中插入一个元素的时间复杂度为 _
选项:
A:O(n)
B: O()
C:O(log2n)
D:O(1)
答案: 【O(n)

16、 问题:在长度为n的顺序表中删除一个元素的时间复杂度为 _
选项:
A: O(1)
B: O()
C:O(log2n)
D:O(n)
答案: 【O(n)

17、 问题:在两个各有n个元素的递增有序顺序表归并成一个有序顺序表,其最少的比较次数为_
选项:
A:n
B:2n-1
C:2n
D:n-1
答案: 【n

18、 问题:将两个长度为n、m的递增有序表归并成一个有序顺序表,其最少的比较次数是_。(MIN表示取最小值)
选项:
A:n
B:m
C:MIN(m, n)
D:不确定
答案: 【MIN(m, n)

19、 问题:在带头节点的单链表L为空的判定条件是 _
选项:
A: L==NULL
B:L->NEXT==NULL
C: L->NEXT==L
D: L!=NULL
答案: 【L->NEXT==NULL

20、 问题:对于一个具有n个元素的线性表,建立其单链表的时间复杂度为 _
选项:
A: O(log2n)
B:O(1)
C: O(n)
D: O()
答案: 【 O(n)

21、 问题:在单链表中查找指定值的节点的时间复杂度是 _
选项:
A:O(log2n)
B:O(1)
C:O()
D:O(n)
答案: 【O(n)

22、 问题:以下关于单链表的叙述中,不正确的是 _
选项:
A:节点除自身信息外还包括指针域,因此存储密度小于顺序存储结构
B:逻辑上相邻的元素物理上不必相邻
C:可以通过头节点直接计算第i个节点的存储地址
D:插入、删除运算操作简单,不必移动节点
答案: 【可以通过头节点直接计算第i个节点的存储地址

23、 问题:在单链表中,增加一个头节点的目的是为了 _
选项:
A:使单链表至少有一个节点
B:标识链表中重要节点的位置
C:方便运算的实现
D:说明单链表是线性表的链式存储结构
答案: 【方便运算的实现

24、 问题:在一个具有n个节点的有序单链表中插入一个新节点并仍然保持有序的时间复杂度是 _
选项:
A:O(nlog2n)
B:O(1)
C: O(n)
D:O()
答案: 【 O(n)

25、 问题:将长度为m的单链表链接在长度为n的单链表之后的算法时间复杂度为 _
选项:
A:O(1)
B:O(n)
C:O(m)
D:O(m+n)
答案: 【O(n)

26、 问题:已知一个长度为n的单链表中所有节点是递增有序的,以下叙述中正确的是 _
选项:
A:插入一个节点使之有序的算法的时间复杂度为O(1)
B:删除最大值节点使之有序的算法的时间复杂度为 O(1)
C:找最小值节点的算法的时间复杂度为 O(1)
D:以上都不对
答案: 【找最小值节点的算法的时间复杂度为 O(1)

27、 问题:在一个长度为n(n>1)的带头节点的单链表上,另设有尾指针r(指向尾节点),执行_操作与链表的长度有关。
选项:
A:删除单链表中的第一个元素
B:删除单链表的尾节点
C:在单链表中第一个元素前插入一个新节点
D:在单链表最后一个元素后插入一个新节点
答案: 【删除单链表的尾节点

28、 问题:在一个双链表中,在p节点之后插入节点q的操作是 _
选项:
A:q->prior = p;p-> next=q;p -> next -> prior =q; q ->next = p -> next;
B:q ->next = p -> next;p -> next -> prior =q;p-> next=q;q->prior = p;
C:p-> next=q;q->prior = p;q ->next = p -> next;p -> next -> prior =q;
D:p -> next -> prior =q;q->prior = p;p-> next=q;q ->next = p -> next;
答案: 【q ->next = p -> next;p -> next -> prior =q;p-> next=q;q->prior = p;

29、 问题:在一个双链表中,在p节点之前插入节点q的操作是 _
选项:
A:p -> prior = q;q-> next=p;p -> prior ->next=q; q ->prior= p -> prior;
B:q ->prior= p -> prior;p -> prior ->next=q;q-> next=p;p -> prior = q->next;
C:q-> next=p;p -> next=q;q-> prior ->next= q;q-> next=p;
D:p -> prior ->next=q;q-> next=p;q -> prior = p->prior;p -> prior = q;
答案: 【p -> prior ->next=q;q-> next=p;q -> prior = p->prior;p -> prior = q;

30、 问题:在一个双链表中, 删除*p节点的操作是 _
选项:
A:p -> prior –>next= p-> next;p ->next-> prior = p -> prior;
B:p ->prior= p -> prior -> prior;p -> prior ->prior = p;
C:p-> next -> prior = p;p-> next=p-> next-> next;
D:p -> next= p->prior -> prior;p-> prior = p->prior->prior;
答案: 【p -> prior –>next= p-> next;p ->next-> prior = p -> prior;

31、 问题:在一个双链表中, 删除*p节点之后的一个节点,其时间复杂度为_
选项:
A:O(nlog2n)
B:O(1)
C:O(n)
D:O()
答案: 【O(1)

32、 问题:非空的循环单链表L的尾节点(由p所指向)满足 _
选项:
A:p-> next == NULL
B:p == NULL
C:p -> next == L
D: p==L
答案: 【p -> next == L

33、 问题:带表头结点的双循环链表L为空表的条件是 _
选项:
A:L== NULL
B:L-> next -> prior == NULL
C:L -> prior == NULL
D:L -> next == L
答案: 【L -> next == L

34、 问题:某线性表最常用的操作是在尾元素之后插入一个元素和删除尾元素,则采用 _ 存储方式最节省运算时间。
选项:
A:单链表
B:循环单链表
C:双链表
D:循环双链表
答案: 【循环双链表

35、 问题:如果对含有n(n>1)个元素的线性表的运算只有4种,即删除第一个元素、删除尾元素、在第一个元素前面插入新元素、在尾元素的后面插入新元素,则最好使用_
选项:
A:只有尾节点指针没有头节点的循环单链表
B:只有尾节点指针没有头节点的非循环双链表
C:只有开始数据节点指针没有尾节点指针的循环双链表
D:既有表头指针也有表尾指针的循环单链表
答案: 【只有开始数据节点指针没有尾节点指针的循环双链表

36、 问题:在某线性表最常用的操作是在尾元素之后插入一个元素和删除第一个元素。故采用_ 存储方式最节省时间。
选项:
A:单链表
B:仅有头节点指针的循环单链表
C:双链表
D:仅有尾指针的循环单链表
答案: 【仅有尾指针的循环单链表

37、 问题:两个表长都为n、不带表头结点的单链表,结点类型都相同,头指针分别为h1与h2,且前者是循环链表,后者是非循环链表,则 _
选项:
A:对于两个链表来说,删除首节点的操作,其时间复杂度都是O(1)
B:对于两个链表来说,删除尾节点的操作,其时间复杂度都是O(n)
C:循环链表要比非循环链表占用更多的内存空间
D:h1和h2是不同类型的变量
答案: 【对于两个链表来说,删除尾节点的操作,其时间复杂度都是O(n)

38、 问题:在长度为n的 _ 上,删除第一个元素,其算法的时间复杂度为O(n)。
选项:
A:只有表头指针的不带表头节点的循环单链表
B:只有表尾指针的不带表头节点的循环单链表
C:只有表尾指针的带表头节点的循环单链表
D:只有表头指针的带表头节点的循环单链表
答案: 【只有表头指针的不带表头节点的循环单链表

39、 问题:下面关于线性表的叙述错误的是 _
选项:
A:线性表采用顺序存储必须占用一片连续的存储空间
B:线性表采用链式存储不必占用一片连续的存储空间
C:线性表采用链式存储便于插入和删除操作的实现
D:线性表采用顺序存储便于插入和删除操作的实现
答案: 【线性表采用顺序存储便于插入和删除操作的实现

40、 问题:对于双链表,在两个节点之间插入一个新节点是,需要修改 _ 个指针域。
选项:
A:1
B:2
C:3
D:4
答案: 【4

41、 问题:在单链表中,要删除某一指定的节点,必须找到该节点的 _ 节点。
选项:
A:后继
B:头节点
C:前驱
D:尾节点
答案: 【前驱

42、 问题:求一个单链表长度的算法的时间复杂度为 _
选项:
A:O(log2n)
B: O(n)
C:O(1)
D: O()
答案: 【 O(n)

43、 问题:线性表中每个元素都有一个前驱元素和一个后继元素。
选项:
A:正确
B:错误
答案: 【错误

44、 问题:线性表中所有元素的排列顺序必须从小到大或从大到小。
选项:
A:正确
B:错误
答案: 【错误

45、 问题:静态链表既有顺序存储结构的优点,又有动态链表的优点,所以,利用它存取第i个元素的时间与元素个数n无关。
选项:
A:正确
B:错误
答案: 【错误

46、 问题:静态链表与动态链表在元素的插入、删除方面类似,不需要做元素的移动。
选项:
A:正确
B:错误
答案: 【正确

47、 问题:线性表的顺序存储结构优于链式存储结构。
选项:
A:正确
B:错误
答案: 【错误

48、 问题:在循环单链表中,从表中任一节点出发都可以通过前后移动操作遍历整个循环链表。
选项:
A:正确
B:错误
答案: 【错误

49、 问题:在单链表中,可以从头节点开始查找任何一个节点。
选项:
A:正确
B:错误
答案: 【正确

50、 问题:在双链表中,可以从任一节点开始沿着同一方向查找到任何其他节点。
选项:
A:正确
B:错误
答案: 【错误

第三章 栈和队列 第三章栈和队列单元测试

1、 问题:元素A、B、C、D依次进栈后,栈顶元素是 _
选项:
A:A
B:B
C:C
D:D
答案: 【D

2、 问题:经过以下运算后, x的值是 _。InitStack (s); Push(s, a); Push(s, b); Pop(s, x); GetTop(s,x)
选项:
A:a
B:b
C:1
D:0
答案: 【a

3、 问题:经过以下栈运算后,StackEmpty(s)的值是 _。InitStack (s); Push(s, a); Push(s, b); Pop(s, x); Pop(s,y)
选项:
A:a
B:b
C:1
D:0
答案: 【1

4、 问题:已知一个栈的进栈序列是ABC,出栈序列为CBA,经过栈的操作是 _
选项:
A:push,pop,push,pop,push,pop
B:push, push, push, pop, pop, pop
C:push, push,pop, pop,push,pop
D:push,pop,push, push,pop, pop
答案: 【push, push, push, pop, pop, pop

5、 问题:若元素a、b、c、d、e、f依次进栈,允许进栈、退栈的操作交替进行,但不允许连续3次退栈工作,则不可能得到的出栈序列是 _
选项:
A:dcebfa
B:cbdaef
C: bcaefd
D:afedcb
答案: 【afedcb

6、 问题:设一个栈的输入序列为A、B、C、D,则借助一个栈所得的输出序列不可能是_
选项:
A:ABCD
B:DCBA
C:ACDB
D:DABC
答案: 【DABC

7、 问题:一个栈的进栈序列是abcde,则栈的不可能的输出序列是 _
选项:
A:edcba
B:decba
C:dceab
D:abcde
答案: 【dceab

8、 问题:已知一个栈的进栈序列是1,2,3,…n,其输出序列的第一个元素是i(1≤i≤n),则第j(1≤j≤n)个出栈元素是_
选项:
A:i
B:n-i
C:j-i+1
D:不确定
答案: 【不确定

9、 问题:已知一个栈的进栈序列是1,2,3,…n,其输出序列是p1,p2,…pn,若p1=n,则pi的值是_
选项:
A:i
B:n-i
C:n-i+1
D:不确定
答案: 【n-i+1

10、 问题:设n个元素的进栈序列是p1,p2,…pn,其输出序列是1,2,3,…n,若pn=1,则pi(1≤i≤n-1)的值是_
选项:
A:n-i+1
B:n-i
C:i
D:不确定
答案: 【n-i+1

11、 问题:设n个元素的进栈序列是1,2,3,…n,其输出序列是p1,p2,…pn,若p1=3,则p2的值是_
选项:
A:一定是2
B:一定是1
C:不可能是1
D:以上都不对
答案: 【不可能是1

12、 问题:设n个元素的进栈序列是p1,p2,…pn,其输出序列是1,2,3,…n,若p3=1,则p1的值是_
选项:
A:可能是2
B:一定是2
C:不可能是2
D:不可能是3
答案: 【不可能是2

13、 问题:设n个元素的进栈序列是p1,p2,…pn,其输出序列是1,2,3,…n,若p3=3,则p1的值是_
选项:
A:可能是2
B:一定是2
C:不可能是1
D:一定是1
答案: 【可能是2

14、 问题:设有5个元素的进栈序列是a,b,c,d,e,其输出序列是c,e,d,b,a,则该栈的容量至少是 _
选项:
A:1
B:2
C:3
D:4
答案: 【4

15、 问题:在数据处理过程中常需要保存一些中间数据,如果后保存的数据先处理,则使用_来保存这些数据。
选项:
A:线性表
B:栈
C:队列
D:单链表
答案: 【

16、 问题:判定一个顺序栈st为(元素个数最多为MaxSize)空的条件为 _
选项:
A:st.top==-1
B: st.top!=-1
C:st.top!=MaxSize
D:st.top==MaxSize
答案: 【st.top==-1

17、 问题:判定一个顺序栈st为(元素个数最多为MaxSize)为栈满的条件为 _
选项:
A: st.top!==-1
B:st.top=-1
C:st.top!=MaxSize-1
D:st.top==MaxSize-1
答案: 【st.top==MaxSize-1

18、 问题:表达式a*(b+c)-d的后缀表达式是 _
选项:
A:a b c d * + –
B:a b c + * d –
C:a b c * + d –
D:- + * a b c d
答案: 【a b c + * d –

19、 问题:若一个栈用数组data[1..n]存储,初始栈顶指针top为n+1,则以下元素x进入栈的正确操作是 _
选项:
A:top++; data[top]=x;
B:data[top]=x;top++;
C:top–; data[top]=x;
D:data[top]=x;top–;
答案: 【top–; data[top]=x;

20、 问题:若一个栈用数组data[1..n]存储,初始栈顶指针top为n,则以下元素x进入栈的正确操作是 _
选项:
A:top++; data[top]=x;
B:data[top]=x;top++;
C:top–; data[top]=x;
D: data[top]=x;top–;
答案: 【 data[top]=x;top–;

21、 问题:若一个栈用数组data[1..n]存储,初始栈顶指针top为0,则以下元素x进入栈的正确操作是 _
选项:
A:top++; data[top]=x;
B: data[top]=x;top++;
C:top–; data[top]=x;
D:data[top]=x;top–;
答案: 【top++; data[top]=x;

22、 问题:若一个栈用数组data[1..n]存储,初始栈顶指针top为1,则以下元素x进入栈的正确操作是 _
选项:
A:top++; data[top]=x;
B:data[top]=x;top++;
C:top–; data[top]=x;
D:data[top]=x;top–;
答案: 【data[top]=x;top++;

23、 问题:链栈与顺序栈相比有一个明显的优点,即 _
选项:
A:插入操作更方便
B:通常不会出现栈满的情况
C:总是不会出现栈空的情况
D:删除操作更加方便
答案: 【通常不会出现栈满的情况

24、 问题:以下各链表均不带有头节点,其中最不合适用作链栈的链表是 _
选项:
A:只有表头指针没有表尾指针的循环双链表
B:只有表尾指针没有表头指针的循环双链表
C:只有表尾指针没有表头指针的循环单链表
D:只有表头指针没有表尾指针的循环单链表
答案: 【只有表头指针没有表尾指针的循环单链表

25、 问题:如果以链表作为栈的存储结构,则退栈操作时 _
选项:
A:必须判断链栈是否为满
B:判断链栈元素的类型
C:必须判断链栈是否空
D:对链栈不做任何判断
答案: 【必须判断链栈是否空

26、 问题:向一个不带头节点的栈顶指针为lst的链栈中插入一个s所指向节点时,则执行 _
选项:
A:lst->next = s;
B: s->next=lst->next; lst->next=s;
C:s->next=lst; lst=s;
D:s->next=lst; lst->next=s;
答案: 【s->next=lst; lst=s;

27、 问题:从一个不带头节点的栈顶指针为lst的栈链中删除一个节点时,用x保存被删节点的值,则执行 _
选项:
A: x=lst; lst = lst->next ;
B:x=lst->data
C:lst=lst->next; x=lst->data;
D:x=lst->data; lst= lst->next;
答案: 【x=lst->data; lst= lst->next;

28、 问题:栈和队列的不同点是 _
选项:
A:都是线性表
B:都不是线性表
C:栈只能在一端进行插入删除操作,而队列在不同端进行插入删除操作
D:没有不同点
答案: 【栈只能在一端进行插入删除操作,而队列在不同端进行插入删除操作

29、 问题:经过下列运算后,队头的元素是 _。InitQueue(qu); Enqueue(qu, ‘a’); EnQueue(qu, ‘b’); EnQueue(qu, ‘c’); DeQueue(qu);
选项:
A:a
B:b
C:1
D:0
答案: 【b

30、 问题:若某循环队列有队首指针front和队尾指针rear,在队不满时进队操作仅会改变_
选项:
A:front
B: rear
C:front和rear
D:以上都不对
答案: 【 rear

31、 问题:循环队列qu的队满条件(front队首指针指向队首元素的前一位置,rear队尾指针指向队尾元素)是 _
选项:
A:(qu.rear+1)%maxsize==(qu.front+1)%maxsize
B:(qu.rear+1)%maxsize==qu.front+1
C:(qu.rear+1)%maxsize==qu.front
D:qu.rear==qu.front
答案: 【(qu.rear+1)%maxsize==qu.front

32、 问题:设循环队列中数组的下标是0~N-1,其队头、队尾指针分别为f和r(f指向队首元素的前一位置,r指向队尾元素),则元素个数为 _
选项:
A: r-f
B: r-f-1
C:(r-f)%N+1
D:(r-f+N)%N
答案: 【(r-f+N)%N

33、 问题:最适合用做链队列的不带表头节点的链表是 _
选项:
A:带首节点指针和尾节点指针的循环单链表
B:只带尾节点指针的非循环单链表
C:只带首节点指针的非循环单链表
D:只带尾节点指针的循环单链表
答案: 【只带尾节点指针的循环单链表

34、 问题:假设用一个不带表头节点的单链表表示队列,在进行删除操作时,_
选项:
A:仅修改头指针
B:仅修改尾指针
C:头、尾指针都要修改
D:头、尾指针可能都要修改
答案: 【头、尾指针可能都要修改

35、 问题:假设用一个不带头节点的单链表表示队列,队头和队尾指针分别为front和rear,则判断队空的条件是 _
选项:
A: front == rear
B: front!==NULL
C: rear!==NULL
D:front == NULL
答案: 【front == NULL

36、 问题:最不合适用做链队的不带头节点的链表是 _
选项:
A:只带队首节点指针的非循环单链表
B:只带队首节点指针的循环双链表
C:只带队尾节点指针的循环双链表
D:以上都不合适
答案: 【只带队首节点指针的非循环单链表

37、 问题:假设用qu[0..M]实现循环队列,f、r分别为队首元素的前一个位置和队尾位置。若用“(r+1)%(M+1)==f”作为队满的标志,则 _
选项:
A:可用“f==r”作为队空的标志
B:可用“f > r”作为队空的标志
C:可用“(f+1)%(M+1)==r”作为队空的标志
D:队列中最多可以有M+1个元素
答案: 【可用“f==r”作为队空的标志

38、 问题:若用一个大小为6的数组来实现循环队列,且当前rear 和front的值分别是0和3,当从队列中删除一个元素,再加入两个元素后,rear 和front的值分别是_
选项:
A:1和5
B:2和4
C:4和2
D:5和1
答案: 【2和4

39、 问题:栈底元素是不能删除的元素。
选项:
A:正确
B:错误
答案: 【错误

40、 问题:顺序栈中元素值的大小是有序的。
选项:
A:正确
B:错误
答案: 【错误

41、 问题:n个元素依次进栈,它们的出栈顺序和进栈顺序一定正好相反。
选项:
A:正确
B:错误
答案: 【错误

42、 问题:栈顶元素和栈底

剩余60%内容付费后可查看