본문 바로가기
네트워크

환형큐

by violetoz 2014. 9. 17.

#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