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

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

E a G C E b D D Q

a b None

```#include <iostream>

#define MaxSize 100

using namespace std;

class Queue {
public:
Queue();

public:
void Push(char ch);
char Pop();
void Clear();

private:
char arr_[MaxSize];
int rear_;
};

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

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

arr_[rear_] = ch;
rear_ = (rear_ + 1) % MaxSize;
}

char Queue::Pop() {
if (rear_ == head_) throw "None";

return ch;
}

void Queue::Clear() {
rear_ = 0;
}

if (rear_ == head_) throw "None";

}

int main() {
Queue q;
char val, key;

while (cin >> key) {
if (key == 'Q') break;

try {
switch (key) {
case 'E':
cin >> val;
q.Push(val);
break;

case 'C':
q.Clear();
break;

case 'G':
break;

case 'D':
cout << q.Pop() << endl;
break;
}
} catch (const char* str) {
cout << str << endl;
}
}

return 0;
}```

## 队列的链式存储结构与操作 题目编号:115

```#include <iostream>

using namespace std;

struct Node {
char _val;
Node* _next;
Node(int val):_val(val), _next(NULL) {}
};

class Queue {
public:
Queue();
~Queue();

public:
void Push(char ch);
char Pop();
void Clear();

private:
Node* rear_;
};

Queue::Queue() {
}

Queue::~Queue() {

for (Node* p = head_; p != NULL; p = afterHead) {
delete p;
}
}

void Queue::Push(char ch) {
Node* node = new Node(ch);

rear_->_next = node;
rear_ = node;
}

char Queue::Pop() {
if (head_->_next == NULL) throw "None";

char res = popedNode->_val;

delete popedNode;

return res;
}

void Queue::Clear() {

for (Node* p = head_->_next; p != NULL; p = afterHead) {
delete p;
}

}

if (head_->_next == NULL) throw "None";

}

int main() {
Queue q;
char val, key;

while (cin >> key) {
if (key == 'Q') break;

try {
switch (key) {
case 'E':
cin >> val;
q.Push(val);
break;

case 'C':
q.Clear();
break;

case 'G':
break;

case 'D':
cout << q.Pop() << endl;
break;
}
} catch (const char* str) {
cout << str << endl;
}
}

return 0;
}```

0 条评论

• ### LeetCode刷题记录：剑指 Offer 06. 从尾到头打印链表

题目要求： 输入一个链表的头节点，从尾到头反过来返回每个节点的值（用数组返回）。

• ### C/C++编程基础：函数指针

在讲函数指针之前，我们需要先理解一个概念：编译器是怎么识别并调用函数的。 众所周知，在C/C++程序编译时，内存有四个功能分区： 1）代码区： 存放函数。...

• ### OJ刷题记录：L1-206-学霸递情书(15分)

题目要求： 李雷和韩梅梅坐前后排。上课想说话怕老师发现，所以改为传小纸条。为了被老师发现他们纸条上说的是啥，他们约定了如下方法传递信息： 将26个英文字母(...

• ### 腾讯教育三款产品入选中央电教馆“推荐名单”

近日，教育部中央电化教育馆公布了2020年“数字校园综合解决方案”名单，腾讯智慧校园、企鹅智笔课堂、智慧教育数据中心三款腾讯教育产品成功入选。《数字校园综合解...

• ### Tensorflow入门教程（四十八）——Seg-GLGAN

今天将分享Unet的改进模型Seg-GLGAN，改进模型来自2020年的论文《A CONTEXT BASED DEEP LEARNING APPROACH FO...

• ### 优雅的使用UITableView

在我们iOS开发中UITableView几乎是所有App都会使用的一个UI控件，因为业务的需要，我们常常会注册多种Cell，然后在