📄 queue.h
字号:
#include<vector>
/* obj.front(); 返回队列首元素,不删除
obj.back() 尾元素
obj.getfront()返回首元素 删除
obj.size() 返回元素个数
重载 += + 添加元素到尾
重载 = 将一个队列复制到左值
*/
template <typename Object>
class Queue
{
public:
Queue()
{
head = new node;
Size = 0;
}
Object & front()
{
if(head->next!=NULL)
{
return head->next->data;
}
else
{
throw runtime_error("空队列");
}
}
Object & back()
{
if(head->next!=NULL)
{
return last->data;
}
else
{
throw runtime_error("空队列");
}
}
Object & getfront()
{
if(head->next!=NULL)
{
node * p_snd = head->next->next;
Object temp = head->next->data;
delete head->next;
head->next = p_snd;
--Size;
return temp;
}
else
{
throw runtime_error("空队列");
}
}
int size()
{
return Size;
};
Queue & q_push_back(const Object& add)
{
if(Size != 0)
{
Node = new node(add);
last->next = Node;
last = Node;
++Size;
}
else
{
last = new node(add);
Node = last;
head->next = Node;
++Size;
}
return *this;
}
Queue & operator+=(const Object& add)
{
return q_push_back(add);
}
private:
struct node
{
node( ):data( ),next(NULL){ };
node(const Object & a ):data(a),next(NULL){ };
Object data;
node * next;
};
node * Node;
node * head;
node * last;
int Size;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -