蓝桥杯备考---线性表

本文介绍了如何使用栈和队列数据结构解决后缀表达式的计算问题,同时涉及内存管理,包括当队列满时清理内存并检查单词是否存在的逻辑。作者在模拟过程中遇到的问题和解决方案也进行了讨论。
摘要由CSDN通过智能技术生成

        p1449 后缀表达式 简单的栈练习 注意stack.empty返回栈空为true 一般循环结束条件为!stack.empty() 

        p1996 队列的模拟 灵活运用队列 n个人围一圈 从一开始喊 喊道m退出 再从一开始 直到n个人均推出   算法:从队头开始 喊一个人让他走到队尾 到m轮正好是队头 直接记录并删除队首元素 

        p1549 简单的队列模拟 但是wa了八个测试点 思路与一篇题解的一模一样 代码也大差不差 唯二不同的两个地方我认为完全不影响 但是这两个却导致输出答案完全不一致

        标记单词是否存在 int --- 答案 bool 

        输入单词 全局int数组存储 --- 但用一个int型

#include<iostream>
#include<queue>
using namespace std;
queue<int> q;
int m, n;
int res;
int exist[110];
int word[1010];
int main(){
	scanf("%d %d", &m, &n);
	for(int i = 0; i < n; i ++){
		scanf("%d", &word[i]);
		if(!exist[word[i]]){//如果该单词不在内存中 
			res ++;//访问外存次数 +1
			if(q.size() == m){//若内存已满 清理最先进来的单词 
				exist[q.front()] = 0;
				q.pop();
			}
			
			q.push(word[i]);//将该单词调入内存 
			exist[word[i]] = 1;//更新单词状态 
		}
	}
		
	cout << res;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值