template<class T>
class PipelineList
{
private:
template<class T>
struct qnode
{
struct qnode *next;
T data;
};
struct qnode<T>* volatile m_front;
struct qnode<T>* volatile m_rear;
bool init()
{
m_front = m_rear = new qnode<T>;
if (!m_front)
{
return false;
}
m_front->next = 0;
return true;
}
void destroy()
{
while (m_front)
{
m_rear = m_front->next;
delete m_front;
m_front = m_rear;
}
}
public:
PipelineList()
{
init();
}
~PipelineList()
{
destroy();
}
bool empty()
{
return (m_front == m_rear);
}
bool push(const T& e)
{
struct qnode<T> *p = new qnode<T>;
if (!p)
{
return false;
}
p->next = 0;
m_rear->next = p;
m_rear->data = e;
m_rear = p;
return true;
}
bool pop(T& e)
{
if (m_front == m_rear)
{
return false;
}
struct qnode<T> *p = m_front;
e = p->data;
m_front = p->next;
delete p;
return true;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)