队列<queue>
来源:互联网 发布:windows apm命令 编辑:程序博客网 时间:2024/05/29 17:50
队列的概念:
指允许在一端进行插入、在另一端进行删除的线性表。允许插入的一端是队尾,通常用rear(尾指针)总是指向队尾,允许删除的是排头,front(头指针)指向排头元素的前一个位置。
循环队列:
将队列的最后一个位置绕到第一个位置,形成逻辑上的环状,供队列循环使用;在循环队列中,当储存的最后一个位置被使用而再要进行入队时,只要第一个位置空闲,便可以将第一个元素放到第一个位置,即存储空间的第一个位置作为队尾。
注意:当rear = front时,不能确定队列是空还是满,需要增加一个标志来判断。比如s=0时,说明队列空,s=1时,队列满。
入队操作:
判断队列是否满。当循环队列非空时且头指针等于尾指针时,说明循环队列已满,不能进行入队操作
‚将队尾指针进一(即rear=rear+1),并当rear=m+1时,rear置1;
ƒ将新元素x插入队尾中时,要置循环队列非空的标志。
退队操作:
判断队列是否空
‚将排头指针进一,即front=front+1;当front=m+1时,front=1;
ƒ排头指针指定的元素赋给指定的变量。
4.判断退队后循环队列是否为空。
循环队列代码:
1 #include<iostream>
2 using namespace std;
3
4 template<class Type>
5 class Queue
6 {
7 public:
8 Queue(int);
9 void prt_Queue();
10 int flag_Queue();
11 void ins_Queue(Type);
12 Type del_Queue();
13 private:
14 int mm;
15 int front;
16 int rear;
17 int s;
18 Type *q;
19 };
20
21 template<class Type>
22 Queue<Type>::Queue(int m)
23 {
24 mm = m;
25 q = new Type[mm];
26 front = mm;
27 rear = mm;
28 s = 0;
29 }
30 template<class Type>
31 void Queue<Type>::prt_Queue()
32 {
33 int i;
34 cout<<"front="<<front<<endl;
35 cout<<"rear="<<rear<<endl;
36 if(s == 0)
37 {
38 cout<<"empty!"<<endl;
39 return ;
40 }
41 i = front;
42 do
43 {
44 i = i+1;
45 if(i == mm+1)
46 i = 1;
47 cout<<q[i-1]<<endl;
48 }while(i!=rear);
49 return ;
50 }
51 template<class Type>
52 int Queue<Type>::flag_Queue()
53 {
54 if((s==1)&&(rear == front))
55 return -1;
56 if(s == 0)
57 return 0;
58 return 1;
59 }
60 template<class Type>
61 void Queue<Type>::ins_Queue(Type x)
62 {
63 if((rear==front)&&(s==1))
64 {
65 cout<<"Queue is overflow!"<<endl;
66 }
67 rear = rear+1;
68 if(rear == mm+1)
69 rear = 1;
70 q[rear-1]= x;
71 s = 1;
72 return ;
73 }
74 template<class Type>
75 Type Queue<Type>::del_Queue()
76 {
77 Type y;
78 if(s == 0)
79 {
80 cout<<"Empty!"<<endl;
81 }
82 front = front+1;
83 if(front == mm+1)
84 front = 1;
85 y = q[front-1];
86 if(front == rear)
87 s= 0;
88 return y;
89 }
#include"queue.h"
int main()
{
Queue<int>q(10);
q.prt_Queue();
q.ins_Queue(5);
q.ins_Queue(4);
q.ins_Queue(3);
q.prt_Queue();
}
~
- queue队列-printer queue
- 队列(queue)
- Queue---队列
- 队列(Queue)
- Queue队列
- Queue队列
- Queue (队列)
- (队列)queue
- 队列Queue
- 队列(queue)
- queue队列
- 队列(Queue)
- 队列<queue>
- 队列queue
- queue 队列
- 队列Queue
- Queue队列
- queue队列
- 关于setTimeout()得到的教训
- ORA-00020:maximum number of processes (150) exceeded 错误解决方法
- 在Django框架中进行字符串翻译
- Oracle导出数据与导入数据语句
- Struts2-异常处理机制
- 队列<queue>
- php mysql_select_db实例
- 贪心算法
- 数据结构:红黑树解析
- MySQL行级锁、表级锁、页级锁详细介绍
- c# substring
- CentOS 添加常用 yum 源
- java简单的计算器
- 大数据量的算法面试题