레포지토리 파기 귀찮아서 그냥 코드 복붙해서 올림
큐, 원형큐 구현한 코드임
//헤더 파일
#ifndef QueueArray_h
#define QueueArray_h
#include <iostream>
namespace que{
template <typename T>
class queue{
protected:
T *q;
int size,rear,front;
public:
queue(int n);
int is_empty();
int is_full();
void insert(T item);
int del();
void print();
~queue();
};
template <typename T>
class cqueue: public queue<T>{
public:
cqueue(int n);
int is_full();
void insert(T item);
int del();
void print();
~cqueue(){};
};
}
#endif
-----------------------------------------------------------------------
//소스 코드
#include "QueueArray.h"
template <typename T>
que::queue<T>::queue(int n):
size(n),q(new T[n]),front(-1),rear(-1){}
template <typename T>
int que::queue<T>::is_empty(){
if(rear==front){
return 1;
}
else{
return 0;
}
}
template <typename T>
int que::queue<T>::is_full(){
if(rear>=size-1){
return 1;
}
else{
return 0;
}
}
template <typename T>
void que::queue<T>::insert(T item){
if(is_full()){
return;
}
q[++rear]=item;
}
template <typename T>
int que::queue<T>::del(){
if(rear==front){
return is_empty();
}
return q[++front];//front값이 (첫 원소 위치-1)
}
template <typename T>
void que::queue<T>::print(){
std::cout<<"current queue: ";
for(int j=front+1;j<=rear;j++){
std::cout<<q[j]<<" ";
}
std::cout<<std::endl;
}
template <typename T>
que::queue<T>::~queue(){
delete[] q;
}
template <typename T>
que::cqueue<T>::cqueue(int n):queue<T>(n){
this->size=n+1;
this->front=0;
this->rear=0;
}
template <typename T>
int que::cqueue<T>::is_full(){
if((this->rear+1)%this->size==this->front){
return 1;
}
else{
return 0;
}
}
template <typename T>
void que::cqueue<T>::insert(T item){
if(is_full()){
return;
}
this->q[(++this->rear)%this->size]=item;
}
template <typename T>
int que::cqueue<T>::del(){
if(this->rear==this->front){
return this->is_empty();
}
return this->q[(++this->front)%this->size];
}
template <typename T>
void que::cqueue<T>::print(){
std::cout<<"current queue: ";
for(int j=this->front+1;j<=this->rear;j++){
std::cout<<this->q[j%this->size]<<" ";
}
std::cout<<std::endl;
}
c++이랑 자료구조 배운지 얼마 안돼서 코드 좆같아도 이해좀
댓글 0