作业1
题目
实现循环顺序队列类
- 私有属性
- 数组:存放队列
- 队头
- 队尾
- 成员函数
- push(type value)
- pop()
- show()
- isEmpty() front = rear
- isFull() rear = MAXSIEZE
- size()
效果
代码
main.cpp
#include <iostream>
#include "queue.h"
using namespace std;
int main(int argc, char const *argv[])
{
Queue queue;
cout << "queue push >>>" << endl;
for (int i = 0; i < 10; i++) {
queue.push(i);
}
queue.show();
cout <<"size = " << queue.size() << endl;
cout << "queue pop >>>" << endl;
for (int i = 0; i < 5; i++) {
queue.pop();
}
queue.show();
cout <<"size = " << queue.size() << endl;
return 0;
}
queue.cpp
#include "queue.h"
#include <iostream>
using namespace std;
/**
* @brief 循环队列判满
* @param 无
* @return true表示满 false表示未满
*/
bool Queue::isFull() { return (this->front == (rear + 1) % MAX_QUEUE) ? true : false; }
/**
* @brief 循环队列判空
* @param 无
* @return true表示满 false表示未满
*/
bool Queue::isEmpty() { return this->front == this->rear ? true : false; }
/**
* @brief 循环队列插入
* @param data 要插入的数据
* @return true表示成功 false表示失败
*/
bool Queue::push(DataType data)
{
// 判队列存在
if (!this) {
cout << "queue isn't existed" << endl;
return -1;
}
// 判满
if (isFull()) {
cout << "queue is full" << endl;
return -1;
}
this->data[rear] = data;
rear = (rear + 1) % MAX_QUEUE;
return 0;
}
/**
* @brief 循环队列遍历
* @param 无
* @return 无
*/
void Queue::show()
{
// 判队列存在
if (!this) {
cout << "queue isn't existed" << endl;
return;
}
// 判空
if (isEmpty()) {
cout << "queue is empty" << endl;
return;
}
for (int i = this->front; i != this->rear; i = (i + 1) % MAX_QUEUE) {
cout << this->data[i] << " ";
}
cout << endl;
}
/**
* @brief 获取循环队列长度
* @param 无
* @return 成功返回循环队列长度 失败返回-1
*/
int Queue::size()
{
// 判队列存在
if (!this) {
cout << "queue isn't existed" << endl;
return -1;
}
return (MAX_QUEUE - this->front + this->rear) % MAX_QUEUE;
}
/**
* @brief 循环队列出队
* @param 无
* @return true表示成功 false表示失败
*/
bool Queue::pop()
{
// 判存在
if (!this) {
cout << "queue isn't existed" << endl;
return false;
}
// 判空
if (this->isEmpty()) {
cout << "queue is empty" << endl;
return -1;
}
front = (front + 1) % MAX_QUEUE;
}
queue.h
#ifndef _QUEUE_H_
#define _QUEUE_H_
#define MAX_QUEUE 32
using DataType = int;
// 通用节点
class Queue
{
private:
DataType data[MAX_QUEUE];
int front;
int rear;
public:
Queue(){
this->front = 0;
this->rear = 0;
}
bool push(DataType data);
bool pop();
void show();
bool isEmpty();
bool isFull();
int size();
};
#endif //_QUEUE_H_
作业2
题目
实现顺序栈类
- 私有属性
- 数组
- 栈顶
- 成员函数
- push(type value)
- pop()
- show()
- isEmpty()
- isFull()
- size()
效果
代码
main.c
#include <iostream>
#include "stack.h"
using namespace std;
using datatype = int;
int main(int argc, char const *argv[])
{
Stack stack;
cout << "stack push >>>" << endl;
for (int i = 0; i < 10; i++) {
stack.push(i);
}
stack.show();
cout <<"size = " << stack.size() << endl;
cout << "stack pop >>>" << endl;
for (int i = 0; i < 5; i++) {
stack.pop();
}
stack.show();
cout <<"size = " << stack.size() << endl;
return 0;
}
stack.cpp
#include "stack.h"
/**
* @brief 顺序栈插入
* @param data 要插入的数据
* @return true表示成功 false表示失败
*/
bool Stack::push(DataType data)
{
// 判满
if (this->isFull()) {
cout << "stack is full" << endl;
return false;
}
this->data[this->top++] = data;
return true;
}
/**
* @brief 顺序栈出队
* @param 无
* @return true表示成功 false表示失败
*/
bool Stack::pop()
{
if (this->isEmpty()) {
cout << "stack is empty" << endl;
return false;
}
this->top--;
return true;
}
/**
* @brief 顺序栈遍历
* @param 无
* @return 无
*/
void Stack::show()
{
if (this->isEmpty()) {
cout << "stack is empty" << endl;
return;
}
for (int i = 0; i < this->top; i++) {
cout << this->data[i] << " ";
}
cout << endl;
}
/**
* @brief 顺序栈判空
* @param 无
* @return true表示满 false表示未满
*/
bool Stack::isEmpty() { return this->top == 0 ? true : false; }
/**
* @brief 顺序栈判满
* @param 无
* @return true表示满 false表示未满
*/
bool Stack::isFull() { return top == MAX_STACK - 1 ? true : false; }
/**
* @brief 获取顺序栈长度
* @param 无
* @return 成功返回顺序栈长度 失败返回-1
*/
int Stack::size() { return this->top; }
stack.h
#ifndef _STACK_H_
#define _STACK_H_
#include <iostream>
#define MAX_STACK 11
using namespace std;
typedef int DataType;
class Stack
{
private:
DataType data[MAX_STACK];
int top;
public:
Stack(){
top = 0;
}
bool push(DataType data);
bool pop();
void show();
bool isEmpty();
bool isFull();
int size();
};
#endif //_STACK_H_