【資料結構(C++實現)】:佇列(queue)
阿新 • • 發佈:2019-01-31
-
C++實現
/*資料結構:佇列*/ #ifndef QUEUE_H #define QUEUE_H template <typename V> class Node{ public: V val; Node<V>* next; Node(V val){ this->val = val; next = NULL; } }; template <typename V> class Queue{ private: int length; Node<V>* head; Node<V>* tail; public: Queue(); ~Queue(); void push(V val); V pop(); V front(); V back(); bool empty(){return length==0;}; int size(){return length;} }; template <typename V> Queue<V>::Queue(){ length = 0; head = NULL; tail = NULL; } template <typename V> Queue<V>::~Queue(){ while(length>0) pop(); } template <typename V> void Queue<V>::push(V val){ Node<V>* node = new Node<V>(val); if(head==NULL){ head = node; tail = node; }else{ tail->next = node; tail = tail->next; } length++; } template <typename V> V Queue<V>::pop(){ if(head==NULL)return NULL; Node<V>* node = head; head = head->next; V val = node->val; delete node; length--; return val; } template <typename V> V Queue<V>::front(){ return head->val; } template <typename V> V Queue<V>::back(){ return tail->val; } #endif // QUEUE_H
-
STL中的queue容器
/*資料結構:STL中的queue容器*/ #include <iostream> #include <queue> using namespace std; int main() { queue<double>* q = new queue<double>(); for(int i=0;i<10;i++) q->push(i); cout<<endl<<"front="<<q->front(); cout<<endl<<"back="<<q->back(); cout<<endl<<"size="<<q->size(); cout<<endl; while(!q->empty()){ cout<<q->front()<<" "; q->pop(); } delete q; return 0; }