邏輯
隊列一種先進先出的資料結構
隻能在一端進行插入,在另一端進行删除
代碼
template <typename T>
class Queue
{
private:
class Node
{
public:
T item;
Node* next;
Node(){}
Node(T item, Node* next) {
this->item = item;
this->next = next;
}
Node(Node& node){
this->item = node.item;
this->next = node.next;
}
};
Node* head;
Node* last;
int num;
public:
Queue(){
head = new Node(0,nullptr);
last = nullptr;
num = 0;
}
~Queue(){
while(!isempty()){
dequeue();
}
delete head;
}
//判斷隊列是否為空
bool isempty(){
if(num == 0) return true;
else return false;
}
//擷取隊列中元素的個數
int size(){
return num;
}
//進隊列
void enqueue(T t){
//如果目前隊列為空
if(last == nullptr){
last = new Node(t, nullptr);
head->next = last;
}
else{
Node* oldlast = last;
last = new Node(t, nullptr);
oldlast->next = last;
}
num++;
}
//出隊列
T dequeue(){
if (isempty()){
return NULL;
}
//将head結點的下一個結點删除
Node* oldNode = head->next;
T items = oldNode->item;
head->next = oldNode->next;
delete oldNode;
num--;
//如果删除的是最後一個元素,則将last指針置空
if(isempty()){
last = nullptr;
}
return items;
}
};