#10781. 栈和队列【NOIP2014】双栈模拟数组
栈和队列【NOIP2014】双栈模拟数组
1. 【NOIP2014】双栈模拟数组
只使用两个栈结构 stack1 和 stack2,模拟对数组的随机读取。作为栈结构,stack1 和 stack2 只能访问栈顶(最后一个有效元素)。栈顶指针 top1 和 top2 均指向栈顶元素的下一个位置。
补全程序:
#include<iostream>
using namespace std;
const int SIZE=100;
int stack1[SIZE],stack2[SIZE];
int top1,top2;
int n,m,i,j;
void clearStack() {
int i;
for (i=top1;i<SIZE;i++)
stack1[i]=0;
for (i=top2;i<SIZE;i++)
stack2[i]=0;
}
int main() {
cin>>n>>m;
for (i=0;i<n;i++)
cin>>stack1[i];
top1= ① ;
top2= ② ;
for (j=0;j<m;j++) {
cin>>i;
while (i<top1-1) {
top1--;
③ ;
top2++;
}
while (i>top1-1) {
top2--;
④ ;
top1++;
}
clearStack();
cout<<stack1[ ⑤ ]<<endl;
return 0;
}
选择题:
- ①处应填( )
{{ select(1) }}
- 0
- n
- 1
- -1
- ②处应填( )
{{ select(2) }}
- 1
- 2
- n
- 0
- ③处应填( )
{{ select(3) }}
- stack2[top2]=stack1[top1]
- top1=top2
- stack2[top1]=stack1[top1]
- stack2[top1]=stack1[top2]
- ④处应填( )
{{ select(4) }}
- stack1[top1]=stack2[top1]
- stack1[top2]=stack2[top1]
- stack1[top1]=stack2[top2]
- stack1[top2]=stack2[top2]
- ⑤处应填( )
{{ select(5) }}
- top1
- top2
- top1-1
- top2-1