#pragma once
#include "CircularQueue.h"
CircularQueue::CircularQueue(void)
: front(0), rear(0)
{
queue.reserve(Queue_Max);
}
CircularQueue::~CircularQueue(void)
{
}
//큐에 숫자를 추가 하는 함수
//intput = 큐에 저장될 수
bool CircularQueue::enqueue(char* input)
{
if(((rear + 1) % Queue_Max) != front) //tail 인텍스 + 1과 head인덱스 값이 같으면 큐가 찼음
{
//큐에 삽입후 tail인덱스 증가
strcpy_s(queue[rear++].str, input);
rear = rear % Queue_Max;
return true;
}
return false;
}
char* CircularQueue::dequeue()
{
int temp_head;
if(front !=rear)
{
temp_head = front;
front = (front + 1) % Queue_Max;
return queue[temp_head].str;
}
}
void CircularQueue::reset()
{
front = rear =0;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <vector>
using namespace std;
const int Queue_Max = 20;
const int Input_Data = 10;
struct StrChar
{
char str[256];
};
class CircularQueue
{
public:
CircularQueue(void);
virtual ~CircularQueue(void);
public:
bool enqueue(char* input); //큐에 문자를 추가하는 함수
char* dequeue(); //큐에서 문자를 가져오는 함수
void reset(); //큐를 리셋하는 함수
private:
int front; //dequeue()를 호출했을때 내보낼 위치
int rear; //enqueue()를 호출했을때 저장할 위치
vector<StrChar> queue;
};
'네트워크' 카테고리의 다른 글
Node.js 시작하기 (0) | 2014.04.08 |
---|---|
윈도우 소켓프로그래밍 C++ 기본 소스 (1) | 2014.02.14 |
라우팅 (0) | 2014.02.12 |
congestive collapse 대충 컨제스티브 컬랩스 (0) | 2014.02.11 |
소켓 IO overlapped CallBack (0) | 2013.05.22 |