#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;
}

选择题:

  1. ①处应填( )
    {{ select(1) }}
  • 0
  • n
  • 1
  • -1
  1. ②处应填( )
    {{ select(2) }}
  • 1
  • 2
  • n
  • 0
  1. ③处应填( )
    {{ select(3) }}
  • stack2[top2]=stack1[top1]
  • top1=top2
  • stack2[top1]=stack1[top1]
  • stack2[top1]=stack1[top2]
  1. ④处应填( )
    {{ select(4) }}
  • stack1[top1]=stack2[top1]
  • stack1[top2]=stack2[top1]
  • stack1[top1]=stack2[top2]
  • stack1[top2]=stack2[top2]
  1. ⑤处应填( )
    {{ select(5) }}
  • top1
  • top2
  • top1-1
  • top2-1