채소 새 학습 데이터 구조 알고리즘 의 순환 대기 열 (순서 저장 구조 실현)
7391 단어 데이터 구조
#ifndef _MYQUEUE__H
#define _MYQUEUE__H
#include
using namespace std;
class MyQueue{
private:
int *_myQueue; //
int _head; //
int _tail; //
int _size; //
int _len; //
public:
MyQueue(int size);
~MyQueue();
void clearQueue(); //
bool isEmpty() const; // eg:const
bool isFull() const; //
int getLength() const; //
bool addQueue(int elem); //
bool deleteQueue(int &elem); //
void traverseQueue(); //
};
#endif //_MYQUEUE__H
코드 구현
#include "MyQueue.h"
MyQueue::MyQueue(int size){
_size = size; //
_myQueue = new int[_size]; //
_head = 0; // 0
_tail = 0; // 0
_len = 0;
}
MyQueue::~MyQueue(){ // ,
delete[]_myQueue;
_myQueue = NULL;
}
void MyQueue::clearQueue(){ //
_head = 0;
_tail = 0;
_len = 0;
}
bool MyQueue::isEmpty() const{ //
if (_len == 0){ // , ,
cout << " " << endl;
return true;
}
return false;
}
bool MyQueue::isFull() const{ //
if (_len == _size){ // ,
cout << " " << endl;
return true;
}
return false;
}
int MyQueue::getLength() const{ //
return _len;
}
bool MyQueue::addQueue(int elem){ //
if (isFull()){
return false;
}
_myQueue[_tail] = elem; // 0
_tail++; // 1
_tail = _tail % _size; /*
4 , 0,1,2,3,
, 4 , ,
, */
_len++;
return true;
}
bool MyQueue::deleteQueue(int &elem){
if (isEmpty()){
return false;
}
elem = _myQueue[_head];
_head++;
_head = _head %_size;
_len--;
return true;
}
void MyQueue::traverseQueue(){
for (int k = 0; k < _len; k++){
cout << _myQueue[k%_size] << endl;
}
}
코드 테스트
#include "MyQueue.h"
int main(){
MyQueue *p = new MyQueue(4);
//
p->addQueue(1);
p->addQueue(2);
p->addQueue(3);
p->addQueue(4);
//
p->traverseQueue();
//
p->isFull();
//
int e = 0;
p->deleteQueue(e);
cout << e << endl;
system("pause");
return 0;
}
오케이, 완공
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.