编程题

(双栈模拟数组)只使用两个栈结构stack1和stack2,模拟对数组的随机读取。作为栈结构,stack1和stack2只能访问栈顶(最后一个有效元素)。栈顶指针top1和top2均指向栈顶元素的下一个位置。

输入第一行包含两个整数,分别是数组长度n和访问次数m,中间用单个空格隔开。

第二行包含n个整数,依次给出数组各项(数组下标从0到n-1)。第三行包含m个整数,需要访问的数组下标。对于每次访问,输出对应的数组元素。(前两空每空2.5分,其余每空3分,共14分)

#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 =      (1)      ;

top2 =      (2)      ;

for (j = 0; j < m; j++) {

cin >> i;

while (i < top1 - 1) {

top1--;

                       (3)       ;

top2++;

  }

while (i > top1 - 1) {

top2--;

       (4)       ;

top1++;

}

clearStack();

cout << stack1[      (5)      ] << endl;

}

return 0;

}

查看答案
赣ICP备20007335号-2