题目
请教几个 栈和队列的题目1.下列对于循环队列的说法,正确的是: A) 循环队列就是队列的顺序存储方式 B) 判断循环队列Q满的条件是:Q.rear=Q.front(即队头指针与队尾指针值相同) C) 判断循环队列Q满的条件是:Q.rear=Q.front=0 D) 循环队列的存储不要求用一组地址连续的存储单元2.在一个链栈中,已知s为栈顶指针(直接指向栈顶元素结点,无头结点),t为栈底指针,直接指向栈底元素,则插入r结点的操作为: A) t->next=r;t=r; B) r->next=s;s=r; C) s->next=r;s=r; D) r->next=t;3.一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是 A 3,5,4,2,1B 3,2,4,5,1C 1,2,3,4,5 D 5,4,3,1,24.在一个链队中,假设f和r分别为队首和队尾指针,则插入s节点的运算时 A f->next=s;f=sB r->next=s;r=sC s->next=r;r=sD s->next=f;f=s5. 循环队列是空队列的条件是 A Q.rear = Q.frontB (Q.rear+1)%maxsize=Q.frontC Q.rear= =0D Q.rear – Q.front = = 0------------------------------------------------------------------10.以数组Q[0..m-1]存放循环队列中的元素,变量rear和qulen分别指示循环队列中队尾元素的实际位置和当前队列中元素的个数,队列第一个元素的实际位置是( ) (A)rear-qulen (B)rear-qulen+m (C) (rear-qulen+m+1)% m (D) m-qulen11.栈结构通常采用的两种存储结构是()。(A) 线性存储结构和链表存储结构(B)散列方式和索引方式(C)链表存储结构和数组 (D)线性存储结构和非线性存储结构12.判定一个栈ST(最多元素为m0)为空的条件是()。(A) ST-〉top!=0 (B)ST-〉top==0 (C)ST-〉top!=m0 (D)ST-〉top=m013.判定一个栈ST(最多元素为m0)为栈满的条件是()。(A)ST-〉top!=0 (B)ST-〉top==0 (C)ST-〉top==m0(D)ST-〉top==m0-114.一个队列的入列序列是1,2,3,4,则队列的输出序列是()。(A)4,3,2,1(B)1,2,3,4(C)1,4,3,2(D)3,2,4,115.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear则当前队列中的元素个数是()(A)(rear-front+m)%m (B) rear-front+1 (C)rear-front-1(D)rear-front7.表达式a*(b+c)-d的后缀表达式是()。(A)abcd*+-(B)abc+*d- (C)abc*+d-(D)-+*abcd9.在单链表结构的栈中,弹栈得到的结点和压栈成为的结点分别为:A.头结点和首结点 B. 头结点和尾结点C. 尾结点和尾结点 D. 首结点和首结点谢谢你的分析,还有2道题目
请教几个 栈和队列的题目
1.下列对于循环队列的说法,正确的是:
A) 循环队列就是队列的顺序存储方式
B) 判断循环队列Q满的条件是:Q.rear=Q.front(即队头指针与队尾指针值相同)
C) 判断循环队列Q满的条件是:Q.rear=Q.front=0
D) 循环队列的存储不要求用一组地址连续的存储单元
2.在一个链栈中,已知s为栈顶指针(直接指向栈顶元素结点,无头结点),t为栈底指针,直接指向栈底元素,则插入r结点的操作为:
A) t->next=r;t=r;
B) r->next=s;s=r;
C) s->next=r;s=r;
D) r->next=t;
3.一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是
A 3,5,4,2,1
B 3,2,4,5,1
C 1,2,3,4,5
D 5,4,3,1,2
4.在一个链队中,假设f和r分别为队首和队尾指针,则插入s节点的运算时
A f->next=s;f=s
B r->next=s;r=s
C s->next=r;r=s
D s->next=f;f=s
5. 循环队列是空队列的条件是
A Q.rear = Q.front
B (Q.rear+1)%maxsize=Q.front
C Q.rear= =0
D Q.rear – Q.front = = 0
------------------------------------------------------------------
10.以数组Q[0..m-1]存放循环队列中的元素,变量rear和qulen分别指示循环队列中队尾元素的实际位置和当前队列中元素的个数,队列第一个元素的实际位置是( )
(A)rear-qulen (B)rear-qulen+m
(C) (rear-qulen+m+1)% m (D) m-qulen
11.栈结构通常采用的两种存储结构是()。
(A) 线性存储结构和链表存储结构(B)散列方式和索引方式
(C)链表存储结构和数组 (D)线性存储结构和非线性存储结构
12.判定一个栈ST(最多元素为m0)为空的条件是()。
(A) ST-〉top!=0 (B)ST-〉top==0
(C)ST-〉top!=m0 (D)ST-〉top=m0
13.判定一个栈ST(最多元素为m0)为栈满的条件是()。
(A)ST-〉top!=0 (B)ST-〉top==0
(C)ST-〉top==m0(D)ST-〉top==m0-1
14.一个队列的入列序列是1,2,3,4,则队列的输出序列是()。
(A)4,3,2,1(B)1,2,3,4(C)1,4,3,2(D)3,2,4,1
15.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear则当前队列中的元素个数是()
(A)(rear-front+m)%m (B) rear-front+1 (C)rear-front-1(D)rear-front
7.表达式a*(b+c)-d的后缀表达式是()。
(A)abcd*+-(B)abc+*d- (C)abc*+d-(D)-+*abcd
9.在单链表结构的栈中,弹栈得到的结点和压栈成为的结点分别为:
A.头结点和首结点 B. 头结点和尾结点
C. 尾结点和尾结点 D. 首结点和首结点
谢谢你的分析,还有2道题目
1.下列对于循环队列的说法,正确的是:
A) 循环队列就是队列的顺序存储方式
B) 判断循环队列Q满的条件是:Q.rear=Q.front(即队头指针与队尾指针值相同)
C) 判断循环队列Q满的条件是:Q.rear=Q.front=0
D) 循环队列的存储不要求用一组地址连续的存储单元
2.在一个链栈中,已知s为栈顶指针(直接指向栈顶元素结点,无头结点),t为栈底指针,直接指向栈底元素,则插入r结点的操作为:
A) t->next=r;t=r;
B) r->next=s;s=r;
C) s->next=r;s=r;
D) r->next=t;
3.一个栈的入栈序列是1,2,3,4,5,则栈的不可能的输出序列是
A 3,5,4,2,1
B 3,2,4,5,1
C 1,2,3,4,5
D 5,4,3,1,2
4.在一个链队中,假设f和r分别为队首和队尾指针,则插入s节点的运算时
A f->next=s;f=s
B r->next=s;r=s
C s->next=r;r=s
D s->next=f;f=s
5. 循环队列是空队列的条件是
A Q.rear = Q.front
B (Q.rear+1)%maxsize=Q.front
C Q.rear= =0
D Q.rear – Q.front = = 0
------------------------------------------------------------------
10.以数组Q[0..m-1]存放循环队列中的元素,变量rear和qulen分别指示循环队列中队尾元素的实际位置和当前队列中元素的个数,队列第一个元素的实际位置是( )
(A)rear-qulen (B)rear-qulen+m
(C) (rear-qulen+m+1)% m (D) m-qulen
11.栈结构通常采用的两种存储结构是()。
(A) 线性存储结构和链表存储结构(B)散列方式和索引方式
(C)链表存储结构和数组 (D)线性存储结构和非线性存储结构
12.判定一个栈ST(最多元素为m0)为空的条件是()。
(A) ST-〉top!=0 (B)ST-〉top==0
(C)ST-〉top!=m0 (D)ST-〉top=m0
13.判定一个栈ST(最多元素为m0)为栈满的条件是()。
(A)ST-〉top!=0 (B)ST-〉top==0
(C)ST-〉top==m0(D)ST-〉top==m0-1
14.一个队列的入列序列是1,2,3,4,则队列的输出序列是()。
(A)4,3,2,1(B)1,2,3,4(C)1,4,3,2(D)3,2,4,1
15.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear则当前队列中的元素个数是()
(A)(rear-front+m)%m (B) rear-front+1 (C)rear-front-1(D)rear-front
7.表达式a*(b+c)-d的后缀表达式是()。
(A)abcd*+-(B)abc+*d- (C)abc*+d-(D)-+*abcd
9.在单链表结构的栈中,弹栈得到的结点和压栈成为的结点分别为:
A.头结点和首结点 B. 头结点和尾结点
C. 尾结点和尾结点 D. 首结点和首结点
谢谢你的分析,还有2道题目
题目解答
答案
1.D 可用链表存储
(bc错误原因见5)
2.C
此为定义,见书即可
3.D
错在1于2之前出栈
4.C
见定义
5.B
循环必然要有求模
7.B
依据二叉树表示表达式的定义(可见数据结构课本二叉树遍历部分),对此二叉树进行后序遍历即可得。
9.D
栈是后进先出的。pop的肯定是栈首,push后的项也将成为栈首。
10.C
同5
11.A
见定义
12.B
13.C
以上12、13 题目应该是默认栈底为NULL
14.B
见队列定义
15.A
同5
(bc错误原因见5)
2.C
此为定义,见书即可
3.D
错在1于2之前出栈
4.C
见定义
5.B
循环必然要有求模
7.B
依据二叉树表示表达式的定义(可见数据结构课本二叉树遍历部分),对此二叉树进行后序遍历即可得。
9.D
栈是后进先出的。pop的肯定是栈首,push后的项也将成为栈首。
10.C
同5
11.A
见定义
12.B
13.C
以上12、13 题目应该是默认栈底为NULL
14.B
见队列定义
15.A
同5
解析
1. 循环队列的定义和性质
步骤 1:理解循环队列的定义
循环队列是队列的一种顺序存储结构,它使用一组地址连续的存储单元来存储队列中的元素。循环队列的特点是队尾指针和队头指针在队列满或空时会回到队列的起始位置,形成一个循环。
步骤 2:判断循环队列是否满的条件
循环队列满的条件是队尾指针rear和队头指针front之间的关系。当rear+1等于front时,队列满。这是因为rear+1会指向下一个要插入的位置,如果这个位置正好是front,说明队列已经没有空位了。
步骤 3:判断循环队列是否空的条件
循环队列空的条件是队尾指针rear和队头指针front相等。当rear等于front时,说明队列中没有元素。
步骤 4:栈和队列的存储结构
栈和队列的存储结构可以是线性存储结构(如数组)或链表存储结构。线性存储结构使用连续的存储单元,而链表存储结构使用链表节点。
步骤 5:栈和队列的插入和删除操作
栈的插入和删除操作在栈顶进行,队列的插入和删除操作分别在队尾和队首进行。在链表结构中,插入和删除操作需要更新指针。
步骤 6:后缀表达式
后缀表达式是将运算符放在操作数之后的表达式。对于表达式a*(b+c)-d,其后缀表达式是将运算符放在操作数之后,按照运算符的优先级和结合性进行转换。
步骤 7:单链表结构的栈
在单链表结构的栈中,弹栈操作得到的是栈顶元素,压栈操作插入的是新的栈顶元素。
步骤 1:理解循环队列的定义
循环队列是队列的一种顺序存储结构,它使用一组地址连续的存储单元来存储队列中的元素。循环队列的特点是队尾指针和队头指针在队列满或空时会回到队列的起始位置,形成一个循环。
步骤 2:判断循环队列是否满的条件
循环队列满的条件是队尾指针rear和队头指针front之间的关系。当rear+1等于front时,队列满。这是因为rear+1会指向下一个要插入的位置,如果这个位置正好是front,说明队列已经没有空位了。
步骤 3:判断循环队列是否空的条件
循环队列空的条件是队尾指针rear和队头指针front相等。当rear等于front时,说明队列中没有元素。
步骤 4:栈和队列的存储结构
栈和队列的存储结构可以是线性存储结构(如数组)或链表存储结构。线性存储结构使用连续的存储单元,而链表存储结构使用链表节点。
步骤 5:栈和队列的插入和删除操作
栈的插入和删除操作在栈顶进行,队列的插入和删除操作分别在队尾和队首进行。在链表结构中,插入和删除操作需要更新指针。
步骤 6:后缀表达式
后缀表达式是将运算符放在操作数之后的表达式。对于表达式a*(b+c)-d,其后缀表达式是将运算符放在操作数之后,按照运算符的优先级和结合性进行转换。
步骤 7:单链表结构的栈
在单链表结构的栈中,弹栈操作得到的是栈顶元素,压栈操作插入的是新的栈顶元素。