📄 lqueue.h
字号:
#if !defined(AFX_LQUEUE_H__5974EC62_97DC_4B1A_99ED_F71A370EB999__INCLUDED_)
#define AFX_LQUEUE_H__5974EC62_97DC_4B1A_99ED_F71A370EB999__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "link.h"
// 队列类模板
template <class Elem> class LQueue
{
public:
CLink<Elem>* front; // 指向队列第一各节点的指针
CLink<Elem>* rear; // 指向队列末尾节点的指针
int size; // 队列中元素总数
public:
LQueue(void){
front=NULL;
rear=NULL;
size=0;
}
~LQueue(void){
clear();
}
void clear() // 清空队列
{
while(front != NULL)
{
rear = front;
front = front->next;
delete rear;
}
rear = NULL;
size = 0;
}
bool enqueue(const Elem& it) // 队列末尾新增节点
{
if (rear == NULL) // 如果队列为空
front = rear = new CLink<Elem>(it, NULL);
else { // 如果队列不为空
rear->next = new CLink<Elem>(it, NULL);
rear = rear->next;
}
size++;
return true;
}
bool dequeue(Elem& it) // 删除队列中的节点,并返回所删除节点的值
{
if (size == 0) return false; // 如果队列为空
it = front->element; // 记录要删除节点的值
CLink<Elem>* ltemp = front; // 记录删除的节点
front = front->next; // 将节点从队列中除去
delete ltemp; // 删除节点
if (front == NULL) rear = NULL; // 如果删除的节点是队列仅剩的节点
size --;
return true;
}
bool frontValue(Elem& it) const // 返回队列中第一个节点的值
{
if (size == 0) return false;
it = front->element;
return true;
}
int length() const{ return size; } // 返回队列长度
bool is_outqueue(Elem& it) // 判断包含所给值的节点是否在队列中
{
CLink<Elem> *temp;
temp=front;
if (front==rear==NULL)
return false;
else
{
while(temp)
{
if(it==temp->element ) return false;
temp=temp->next;
}
return true;
}
}
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -