前端响应式网站,免费网站app生成软件,成都设计网站的公司名称,移动端开发前景定义
使用链表描述队列时#xff0c;通常包含以下几个基本要素#xff1a;
队头指针#xff08;Front Pointer#xff09;#xff1a;指向队列中第一个#xff08;即最早进入队列的#xff09;元素的节点。队尾指针#xff08;Rear Pointer#xff09;#xff1a;指…定义
使用链表描述队列时通常包含以下几个基本要素
队头指针Front Pointer指向队列中第一个即最早进入队列的元素的节点。队尾指针Rear Pointer指向队列中最后一个即最近进入队列的元素的节点。节点Node每个节点包含数据域和指向下一个节点的指针。
队列的基本操作包括
入队在队尾添加新元素。出队移除队头元素。查看队头元素获取队头元素但不移除它。检查队列是否为空判断队头指针是否为空或者判断size是否为0。
抽象类queue
templatetypename T
class queue
{
public:virtual ~queue(){}virtual bool empty() const 0;virtual int size() const 0;virtual T font() const 0;virtual T back() const 0;virtual void push(const T theElement) const 0;virtual void pop() 0;
};
派生类linkQueue
templatetypename T
class linkQueue : public queueT
{
public:linkQueue();~linkQueue();bool empty() const;int size() const;T font() const;T back() const;void push(const T theElement);void pop();private:linkNodeT* fontNode;linkNodeT* backNode;int queueSize;
};
templatetypename T
linkQueueT::linkQueue()
{fontNode nullptr;backNode nullptr;queueSize 0;
}templatetypename T
linkQueueT::~linkQueue()
{while(!empty()){pop();}
}templatetypename T
bool linkQueueT::empty() const
{return queueSize 0;
}templatetypename T
int linkQueueT::size() const
{return queueSize;
}templatetypename T
T linkQueueT::font() const
{assert(fontNode ! nullptr);return *fontNode;
}templatetypename T
T linkQueueT::back() const
{assert(backNode ! nullptr);return *backNode;
}templatetypename T
void linkQueueT::push(const T theElement)
{auto newNode new linkNodeT(theElement,nullptr);if(queueSize 0){fontNode newNode;}else{backNode-next newNode;}backNode newNode;queueSize;}templatetypename T
void linkQueueT::pop()
{assert(queueSize 0);auto nextNode fontNode-next;delete fontNode;fontNode nextNode;queueSize--;
}