OJ刷题记录:队列的存储结构与操作

本文介绍了如何使用C++实现顺序存储和链式存储结构的队列,包括入队、出队、清空队列和获取队首元素的操作。通过具体的例子展示了操作过程,并给出了相应的解题思路和通关代码。
摘要由CSDN通过智能技术生成

队列的顺序存储结构与操作 题目编号:460

题目要求:
请定义一个顺序队列,可以对队列进行“入队”、“出队”、“清空队列”、“获取队首元素”等操作。键盘输入一些命令,可以执行上述操作。本题中,队列的元素为字母, 队列的最大元素个数为100。
输入描述

输入各个命令,它们对应的格式如下:

入队:E a,a代表入队的元素,这里E和元素之间用空格分隔。

清空队列:C

获取队头元素:当输入的命令为D时,输出出队的元素值;

当输入的命令是G时,输出当前队首元素值;

如果没有元素可出队或可取,

输出描述

当输入的命令为D时,输出出队的元素值;

当输入的命令是G时,输出当前队首元素值;

如果没有元素可出队或可取,请输出None;

输入样例

E a
G
C
E b
D
D
Q

输出样例

a
b
None

解题思路:
每一次操作时需要对移动的数组下标(head_ 或者 rear_)进行取模,以实现数组的首尾循环,防止假溢出。

通关代码:

#include <iostream>

#define MaxSize 100

using namespace std;

class Queue {
   
	public:
		Queue();
		
	public:
		void Push(char ch);
		char Pop();
		void Clear();
		char getHead();
		
	private:
		char arr_[MaxSize];
		int head_;
		int rear_;
};

Queue::Queue() {
   
	head_ = 0;
	rear_ = 0;
}

void Queue::Push(char ch) {
   
	if ((rear_ + 1) % MaxSize == head_) throw "上溢";
	
	arr_[rear_] = ch;
	rear_ = (rear_ + 1) % MaxSize;
}

char Queue::Pop(
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值