已知一个栈的进栈序列为1,2,3,…,n,其输出序列的第一个元素是i,则第j(>i)个出栈元素是( )。
A.j-i
B.n-i
C.j-i+1
D.不确定
已知一个栈的进栈序列为1,2,3,…,n,其输出序列是p1,p2,p3,…,pn。若p1=n,则pi的值是( )
A.i
B.n-i
C.n-i+1
D.不确定
已知一个栈的进栈序列为1,2,3,…,n,其输出序列是p1,p2,p3,…,pn。若p1=3,则p2的值( )。
A.一定是2
B.一定是1
C.可能是1
D.可能是2
已知一个栈的进栈序列为p1,p2,p3,…,pn,其输出序列是1,2,3,…,n。若p3=1,则p1的值( )。
A.一定是2
B.可能是2
C.不可能是2
D.一定是3
已知一个栈的进栈序列为p1,p2,p3,…,pn,其输出序列是1,2,3,…,n。若p3=3,则p1的值( )。
A.一定是2
B.可能是2
C.不可能是1
D.一定是1
最适合用作链式队列的链表是( )。
A.带有队头指针和队尾指针的循环单链表
B.带有队头指针和队尾指针的非循环单链表
C.只带队头指针的循环单链表
D.只带队头指针的非循环单链表
最不适合用作链式队列的链表是( )。
A.带有队头指针的双向非循环链表
B.带有队头指针的双向循环链表
C.只带队尾指针的双向循环链表
D.只带队尾指针的循环单链表
设一个链式队列q的队头指针和队尾指针分别为front和rear,则判断队列空的条件是( )。
A.q.front==q.rear
B.q.front==NULL
C.q.rear==NULL
D.q.front!=NULL
对一个初始为空的队列Q执行操作enQueue(Q,a),enQueue(Q,b),deQueue(Q,x),deQueue(Q,y)之后,再执行isEmpty(Q),返回的值是( )。
A.a
B.b
C.1
D.0
为解决计算机主机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区。主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是( )。
A.栈
B.队列
C.树
D.图
设一维数组elem[maxSize]存放循环队列的元素,同时以rear和length分别指示循环队列中的队尾位置和队列中所含元素的个数。下面算法的功能是:插入(EnQueue)和删除(DeQueue)元素的操作。请在空白处填入正确的语句。
- //设该循环队列的结构定义为
- #define maxSize 100
- typedef int ElemType;
- typedef struct { //循环队列的结构定义
- ElemType elem[maxSize]; //队列存储数组
- int rear, length; //队列的队尾指针和队列长度。rear是实际的队尾位置。
- } CircQueue;
- int EnQueue(CircQueue &Q, ElemType x)
- {
- 10. //元素x存放到队列尾部。若进队列成功,函数返回true,否则返回false。
- 11. if(___________①_____________)
- 12. return flase; //判队列是否不满,满则出错
- 13. Q.rear = __________②__________; //队尾指针进1
- 14. _________③__________; //进队列
- 15. _________④__________; //队列长度加1
- 16. return true;
17. }
18. int DeQueue(CircQueue &Q, ElemType &x)
19. {
- 20. //从队列队头退出元素由x返回。若退队列成功,函数返回true,否则返回false。
- 21. if(__________⑤__________)
- 22. return false; //判断队列是否不空,空则出错
- 23. Q.length--; //队列长度减1
- 24. x = elem[(Q.rear - Q.length + 1 + maxSize) % maxSize]; //返回原队头元素值
- 25. return true;
26. }
答案
①Q.length==maxsize
②(Q.rear+1)%maxsize
③Q.elem[Q.rear]=x
④Q.length++
⑤Q.length==0
【第3-3题】下面算法的功能是:对于一个采用字符数组存放的字符串str,递归算法StrLength(char *str)求其字符个数(长度)。请在空白处填入正确的语句。
【解答】:
- #include <iostream>
- using namespace std;
- int StrLength(char *str) //求str的字符个数
- {
- if(_______①_________)
- return 0;
- else
- return ________②__________;
- }
10.int main()
11.{
- char str[] = "abcd";
- cout << str << "的长度: " << StrLength(str) << endl;
14.}
①*str == '\0';
②StrLength(str + 1) + 1
【第3-4题】设有一个不带表头结点的单链表,下面递归算法的功能是:
(1) 删除以head为头指针的单链表中值为x的所有结点。
(2) 输出以head为头指针的单链表中最大结点值。
(3) 删除并释放以head为头指针的单链表中所有结点。
请在空白处填入正确的语句。
- (1)
- void delall(LinkList &head, ElemType x)
- {
- LinkList p;
- if (head != NULL) {
- if (________①_________) {
- p = head;
- ________②________;
- free(p);
- 10. _________③______________;
- 11. }
- 12. else
- 13. delall(head->next, x);
- 14. }
15. }
16. (2)
17. ElemType MaxValue(LinkList head)
18. {
- 19. ElemType m;
- 20. if (__________④___________)
- 21. return (head->data);
- 22. m = _______⑤_________;
- 23. if (_______⑥_________)
- 24. return m;
- 25. else
- 26. return head->data;
27. }
28. (3)
29. void release(LinkList head)
30. {
- 31. if (_______⑦________) {
- 32. release(head->next);
- 33. _______⑧________;
- 34. }
35. }
答案
①head->data == x
②head = head->next
③delall(head, x)
④head->next == NULL
⑤MaxValue(head->next)
⑥m > head->data
⑦head != NULL
⑧free(head)
#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=
本文来自博客园,作者:凡是过去,皆为序曲,转载请注明原文链接:https://www.cnblogs.com/longhai3/p/15887677.html
如有疑问,欢迎提问
#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=#+=