
#ifndef QUEUETP_H_
#define QUEUETP_H_
template<class Item>
class QueueTP
{
private:
enum{Q_SIZE = 10};
class Node
{
public:
Item item;
Node * next;
Node(const Item & i):item(i),next(0){}
};
Node * front;
Node * rear;
int items;
const int qsize;
QueueTP(const QueueTP &q):qsize(0){}
QueueTP(const QueueTP *q){return *this;}
public:
QueueTP(int qs = Q_SIZE);
~QueueTP();
bool isempty() const
{
return items == 0;
}
bool isfull() const
{
return items == qsize;
}
int queuecount() const
{
return items;
}
bool enqueue(const Item &item); //add item to end
bool dequeue( Item &item); //remove item from front
};
// QueueTP methods
template <class Item>
QueueTP<Item>::QueueTP(int qs) : qsize(qs)
{
front = rear = 0;
items = 0;
}
template <class Item>
QueueTP<Item>::~QueueTP()
{
Node * temp;
while (front != 0) // while queue is not yet empty
{
temp = front; // save address of front item
front = front->next;// reset pointer to next item
delete temp; // delete former front
}
}
//add item to queue
template <class Item>
bool QueueTP<Item>::enqueue(const Item &item)
{
if (isfull())
{
return false;
}
Node * add = new Node(item);
if (add == NULL)
{
return false;
}
items++;
if (front == 0)
{
front = add;
}
else
{
rear->next = add;
}
rear = add;
return true;
}
// Place front item into item variable and remove from queue
template <class Item>
bool QueueTP<Item>::dequeue(Item & item)
{
if (front == 0)
return false;
item = front->item; // set item to first item in queue
items--;
Node * temp = front; // save location of first item
front = front->next; // reset front to next item
delete temp; // delete former first item
if (items == 0)
rear = 0;
return true;
}
#endif

int _tmain(int argc, _TCHAR* argv[])
{
QueueTP<string> cs(5);
string temp;
while( !cs.isfull() )
{
cout<<"Please enter your name,you will be served in the order of arrival.\n";
getline(cin, temp);
cs.enqueue(temp);
}
cout<<"the queue is full.process begins.\n";
while( !cs.isempty() )
{
cs.dequeue(temp);
cout<<"Now processing "<<temp<<endl;
}
system("pause");
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧