Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- array
- unalias
- halliday
- 0x
- Get
- 점점변하는값
- cocos2d-x
- PORTG
- 강좌
- application.mk
- SQL
- php
- mysql
- mathemetica
- function
- C++
- 하이퍼 터미널
- android studio
- Avr
- Call
- 월별 카운트
- Java
- is_array
- solution
- 파일존재
- selectc
- 현재언어
- Join
- Post
- 단축키
Archives
- Today
- Total
코딩도사의 코드정리
Circular Queue 배열 구현 클래스 본문
template <typename Node> class CircularQueue { private: Node* node; // 노드 배열 int capacity; // 큐의 용량 int front; // 전단의 인덱스 int rear; // 후단의 인덱스 public: CircularQueue(int capacity) { this->capacity = capacity + 1; // 노드 배열의 크기는 실제 용량에서 1을 더한 크기 (더미 공간 때문) node = new Node[this->capacity]; // Node 구조체 capacity + 1개를 메모리 공간에 할당한다 front = 0; rear = 0; // 전단과 후단의 초기화 } ~CircularQueue() { delete []node; // 노드 배열 소멸 } void clear() { front = rear = 0; } void enqueue(const Node& data) { int pos; // 데이터가 들어갈 인덱스 pos = rear; rear = (rear + 1) % (capacity); node[pos] = data; // pos 번째의 노드의 데이터에 data를 대입한다 } Node dequeue() { int pos = front; // pos에 전단의 인덱스 대입 front = (front + 1) % capacity; return node[pos]; // 제외되는 데이터를 반환한다 } int getSize() { if (front <= rear) // 전단의 인덱스가 후단의 인덱스와 같거나 그보다 작다면 return rear - front; // 후단의 인덱스에서 전단의 인덱스를 뺀값을 반환한다 else // 전단의 인덱스가 후단의 인덱스보다 크다면 return capacity - front + rear; // 용량에서 전단의 인덱스를 뺀 뒤에 후단의 인덱스를 더한 값을 반환한다 } bool isEmpty() { return front == rear; // 전단의 인덱스와 후단의 인덱스가 같을 경우 true, 아니면 false } bool isFull() { return front == (rear + 1) % capacity; } int getRear() { return rear; } int getFront() { return front; } vector<Node> getTotalData() { int tempFront = front; vector<Node> T; while(tempFront != rear) { T.push_back(node[tempFront]); tempFront = (tempFront + 1) % capacity; } return T; } // void show() // { // int tempFront = front; // while(tempFront != rear) // { // cout << node[tempFront].data << "/"; // // tempFront = (tempFront + 1) % capacity; // } // cout << endl; // } };
'컴퓨터 이야기 > C++' 카테고리의 다른 글
32bit / 64bit well hash functions (0) | 2016.06.02 |
---|---|
JNI 정리. (0) | 2016.05.30 |
boost::pool 메모리 풀 (0) | 2015.12.09 |
C++ Standard draft 07 (0) | 2011.02.05 |
나머지 연산자의 동작. (2) | 2011.01.13 |