queue.h

来自「二叉树」· C头文件 代码 · 共 58 行

H
58
字号
//         queue implemented as an array
//       课本上的,用的是first和last

#ifndef ARRAY_QUEUE
#define ARRAY_QUEUE
#include<iostream.h>

template<class T, int size = 50>
class ArrayQueue {
public:
    ArrayQueue() { 
		first = last = -1; //初始化,队列为空
	}
    void enqueue(T);
    bool dequeue(T & el);
    bool isFull()  { 
		return first == 0 && last == size-1 || first == last + 1; 
	}
    bool isEmpty() { 
		return first == -1; 
	}
private:
    int first, last;
    T storage[size];
};

template<class T, int size>
void ArrayQueue<T,size>::enqueue(T el) {
   if (!isFull())
        if (last == size-1 || last == -1) {
            storage[0] = el;
            last = 0;
            if (first == -1)
                first = 0;
        }
        else storage[++last] = el;
   else cout << "Full queue.\n";
}

template<class T, int size>
bool ArrayQueue<T,size>::dequeue(T & el) { 
	if(isEmpty())
		return 0;
    el = storage[first];
    if (first == last)
         last = first = -1;
	else
		first=(first+1)%size;
 /* 这个也对,替换else部分,但是比较繁琐  
    else if (first == size-1)
         first = 0;
    else first++;
*/
    return 1;
}

#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?