채소 새 학습 데이터 구조 알고리즘 의 순환 대기 열 (순서 저장 구조 실현)

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;
}

오케이, 완공

좋은 웹페이지 즐겨찾기