7.7 栈与队列-队列及其操作
来源:互联网 发布:自然语言处理算法 编辑:程序博客网 时间:2024/05/18 03:07
队列(Queue)也是一种限定存取位置的线性表。它只允许在表的一端插入,而在另一端删除。
允许插入的一端称为队尾(rear),允许删除的一端叫做队头(front)。每次在队尾加入新元素,加入称为进队,删除称为出队。(查看动画演示)
队列的这种特性正好与栈相反,叫做先进先出(FIFO,First In First Out)。
为了充分利用队列,顺序队列总是做成一个逻辑上的循环队列。
注意:空队时rear等于front,满队时必须空一个位置。
{
int rear,front; //队尾与队头下标
T *elements; //存放队列元素的容器
int maxSize; //队列最多可容纳元素个数+1
public:
Queue(int ms=18);
~Queue()
{
delete[] elements;
}
bool IsEmpty() const //判队空
{
return front==rear;
}
bool IsFull() const //判队满
{
return (rear+1)%maxSize==front;
}
int Length() const //求队中元素数,注意求余算法
{
return (rear-front+maxSize)%maxSize;
}
void EnQue(const T &data); //进队
T DeQue(); //出队
T GetFront(); //取队头数据
void MakeEmpty()//队置空(初始态)
{
front=rear=0;
}
};
更详细的代码参见【例7.10】。
链队列类模板示例:请参见【例7.11】。
允许插入的一端称为队尾(rear),允许删除的一端叫做队头(front)。每次在队尾加入新元素,加入称为进队,删除称为出队。(查看动画演示)
队列的这种特性正好与栈相反,叫做先进先出(FIFO,First In First Out)。
顺序队列
空队时指针(下标)front和rear在一起都指向队前方,当有元素进队,则rear后移;有元素出队,则front后移,最后,开始时分配给队的前端不再被利用。(查看动画演示)为了充分利用队列,顺序队列总是做成一个逻辑上的循环队列。
注意:空队时rear等于front,满队时必须空一个位置。
顺序循环队列类模板
template<typename T>class Queue{
int rear,front; //队尾与队头下标
T *elements; //存放队列元素的容器
int maxSize; //队列最多可容纳元素个数+1
public:
Queue(int ms=18);
~Queue()
{
delete[] elements;
}
bool IsEmpty() const //判队空
{
return front==rear;
}
bool IsFull() const //判队满
{
return (rear+1)%maxSize==front;
}
int Length() const //求队中元素数,注意求余算法
{
return (rear-front+maxSize)%maxSize;
}
void EnQue(const T &data); //进队
T DeQue(); //出队
T GetFront(); //取队头数据
void MakeEmpty()//队置空(初始态)
{
front=rear=0;
}
};
更详细的代码参见【例7.10】。
链队列类模板示例:请参见【例7.11】。
0 0
- 7.7 栈与队列-队列及其操作
- 栈与队列及其基本操作(java版)
- C++队列及其操作
- 栈与队列基本操作
- 栈与队列->队列
- 链表,顺序表的基本操作及其实现的栈与队列
- 操作与队列
- 栈和队列的基本操作及其应用
- 栈、队列与优先队列
- 实验4:栈和队列的基本操作实现及其应用——循环队列
- 实验4:栈和队列的基本操作实现及其应用——链队列
- 实验4:栈和队列的基本操作实现及其应用之《循环队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《顺序队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验4:栈和队列的基本操作实现及其应用之《顺序队列》
- 实验4:栈和队列的基本操作实现及其应用之《链队列》
- 实验3:栈和队列的基本操作实现及其应用——顺序队列和链队列
- 勾股定理一日一证连载22
- 7.4 链表-单链表类型模板
- 7.5 链表-双向链表
- Pascal's Triangle II
- 7.6 栈与队列-栈的基本操作和应用
- 7.7 栈与队列-队列及其操作
- 7.8 二叉树
- 8.1 继承与派生的概念
- 8.2 派生类的构造函数与析构函数
- 8.3 多重继承与派生类成员标识
- 8.4 虚基类
- 8.5 派生类应用讨论
- Palindrome Number
- 8.6 多态性与虚函数