NOIP 2014 提高组初赛试题完善程序题 5.1 双栈模拟数组

只使用两个栈结构 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) ;//n
	top2 = (2) ;//0
	
	for (j = 0; j < m; j++) {
		cin >> i;
		while (i < top1 - 1) {
			top1--;
			(3) ;//stack2[top2]=stack1[top1]
			top2++;
		}
		//当下一次要访问元素素在i之前时,通过stack1的栈顶元素取出并放到
		//stack2中实现“指针的向前移动” 
		while (i > top1 - 1) {
			top2--;
			(4) ;//stack1[top1]=stack2[top2]
			top1++;
		}
		//当下一次要访问元素素在i之后时,通过stack2的栈顶元素取出并放到
		//stack1中实现“指针的向后移动”

		clearStack();
		
		cout << stack1[ (5) ] << endl;//top1-1
	}
		
	return 0;
}



NOIP 提高组 初赛 三、问题求解 习题集NOIP1995-NOIP2018

NOIP 提高组 初赛 三、问题求解 习题集NOIP1995-NOIP2018-CSDN博客

NOIP普及组2006-2018初赛 2019 CSP-J1 2020 CSP-J1 完善程序题

NOIP普及组2006-2018初赛 2019 CSP-J1 2020 CSP-J1 完善程序题-CSDN博客

NOIP2006-2018 提高组 初赛试题完善程序题 CSP-S 2019 2020 初赛试题完善程序题

NOIP2006-2018 提高组 初赛试题完善程序题 CSP-S 2019 2020 初赛试题完善程序题_dllglvzhenfeng的博客-CSDN博客

【NOIP2007 普及组】 问题求解题 (子集划分)+Floyd算法

【NOIP2007 普及组】 问题求解题 (子集划分)+Floyd算法-CSDN博客

NOIP 2008 普及组初赛试题完善程序 4.2 (找第k大的数)

NOIP 2008 普及组初赛试题完善程序 4.2 (找第k大的数)_dllglvzhenfeng的博客-CSDN博客

NOIP 2010 普及组 初赛试题 完善程序 4.1 哥德巴赫猜想

NOIP 2010 普及组 初赛试题 完善程序 4.1 哥德巴赫猜想_dllglvzhenfeng的博客-CSDN博客

NOIP 2010 普及组初赛试题完善程序4.2(过河问题)

NOIP 2010 普及组初赛试题完善程序4.2(过河问题)_dllglvzhenfeng的博客-CSDN博客

NOIP 2016 普及组初赛试题_完善程序 4.2 郊游活动

NOIP 2016 普及组初赛试题_完善程序 4.2 郊游活动_dllglvzhenfeng的博客-CSDN博客

NOIP 2017 提高组初赛试题_完善程序 5.1 大整数除法

NOIP 2017 提高组初赛试题_完善程序 5.1 大整数除法_dllglvzhenfeng的博客-CSDN博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dllglvzhenfeng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值