C++練習問題——循環キュー(順次記憶)
派手なものはあまりないし、自分が書いたものがどれだけ今の「コード規範」に合っているのか分からないし、すべて勉強中なので、見てほしい先輩は不足を指摘することができます.
Cirque.h
Cirque.cpp
main.cpp
Cirque.h
#pragma once
#include <iostream>
const int INIT_SIZE = 10; //
class Cirque{
// , int
private:
int size; //
int front;// ( )
int rear;// ( )
int* base;//
// int length;// length , :)
public:
Cirque(); //
Cirque(int initsize);// initsize
void Clear(); //
int Enque(int data); //
int Deque(); //
bool IsFull(); //
bool IsEmpty();//
~Cirque(); //
};
Cirque.cpp
#include "cirqueue.h"
using std::cout;
using std::endl;
//----------------------------------------------------
Cirque::Cirque(){//
base = new int[INIT_SIZE];
if(!base){//
exit(-1);
}
front = rear = 0; // :)
size = INIT_SIZE;
}
//----------------------------------------------------
Cirque::Cirque(int initsize){// initsize
base = new int[initsize];
if(!base){
exit(-1);
}
front = rear = 0;
size = initsize;
}
//----------------------------------------------------
void Cirque::Clear(){
front = rear = 0;
}
//----------------------------------------------------
bool Cirque::IsEmpty(){
if (front == rear) {
return true;
}else
{
return false;
}
}
//----------------------------------------------------
bool Cirque::IsFull(){
if ((rear + 1) % size == front) {
return true;
}
else{
return false;
}
}
//----------------------------------------------------
int Cirque::Enque(int data){
if (!IsFull()) {
base[rear] = data;
rear = (rear + 1) % size;
return 0;
}
else{
return -1;
}
}
//----------------------------------------------------
int Cirque::Deque(){
if (!IsEmpty()) {
int da = base[front];
front = (front + 1) % size;
return da;
}
else{
exit(-1); // 。。。
}
}
//----------------------------------------------------
Cirque::~Cirque(){
delete base;
base = NULL;
}
//----------------------------------------------------
main.cpp
// ,
// 。
#include <iostream>
#include "cirqueue.h"
using std::cout;
using std::endl;
int main(int argc, const char * argv[])
{
Cirque c1;
Cirque c2;
c1.Enque(3);
c2.Enque(4);
cout << c1.Deque() << endl;
cout << c2.Deque() << endl;
return 0;
}