题库 信息学奥赛题库 题目列表 (双栈模拟数组)只使用两个栈结构 stack1 和 st...
组合题

(双栈模拟数组)只使用两个栈结构 

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

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

第二行包含 n 个整数,一次给出数组各项(数组下标从 0 到 a−1)。第三行包含 m 个整数,需要访问的数组下标。对于每次访问,输出对应的数组元素。

#include <stdio.h>
const intSIZE = 100;
intstack1[SIZE], stack2[SIZE];
inttop1, top2;
intn, 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() {
	scanf( "%d,%d", &n, &m );
	for ( i = 0; i < n; i++ )
		scanf( "%d", &stack1[i] );
	top1= ______ (1)______;
	top2= ______ (2)______;
	for ( j = 0; j < m; j++ ) {
		scanf( "%d", &i );
		while ( i < top1 - 1 ) {
			top1--;
			______( 3 ) ______;
			top2++;
		}
		while ( i > top1 - 1 ) {
			top2--;
			______( 4 ) ______;
			top1++;
		}
		clearstack();
		printf( "%d\n", stack1[______( 5 ) ______] );
	}
	return(0);
}

第 1 题 填空
第 2 题 填空
第 3 题 填空
第 4 题 填空
第 5 题 填空
题目信息
阅读程序 2014年 初赛
-
正确率
0
评论
31
点击
QQ
微信