数据结构5-队列
2016-03-21 14:40
363 查看
5.1简介
队列(Queue)和堆栈一样是一种有序链表,属于抽象数据类型。不同在于是先进先出(First in,First out,FIFO)。
堆栈只需要一个top指针指向堆栈顶端即可,但是队列必须使用front和rear两个指针分别指向队列的前端和尾端。
基本操作:
1)create:建立空队列;
2)add:将新数据加入到队列的尾端,返回新队列;
3)delete:删除队列前端数据,并返回新队列;
4)front:返回队列前端值;
5)empty:若队列为空集,返回为真,否则false。
队列的数组实现:
队列的链表实现:
5.2队列的应用
主要应用有:
1)广度优先搜索发(BFS);
2)计算机的模拟;
3)CPU的工作进程;
循环队列:
目的:为了节约直线队列在数据移动过程中所浪费的时间;
front指针永远以逆时针方向指向队列中第一个元素前一个位置,rear则指向当前队列的最后一个位置,一开始front和rear均初始化为-1,表示空队列。
其实就是一个环形队列!
优先队列(Priority Queue):
是一种不必遵守队列特性,即先进先出的有序链表,其中每一个元素都赋予一个优先级,加入元素时可以任意加入,但是有最高优先级者则最先输出。
双向队列(Double-ends Queues):
是一种前后两端都可以输入或取出数据的有序链表。两边的指针都往队列的中央移动。
队列(Queue)和堆栈一样是一种有序链表,属于抽象数据类型。不同在于是先进先出(First in,First out,FIFO)。
堆栈只需要一个top指针指向堆栈顶端即可,但是队列必须使用front和rear两个指针分别指向队列的前端和尾端。
基本操作:
1)create:建立空队列;
2)add:将新数据加入到队列的尾端,返回新队列;
3)delete:删除队列前端数据,并返回新队列;
4)front:返回队列前端值;
5)empty:若队列为空集,返回为真,否则false。
队列的数组实现:
#include<iostream> using namespace std; const int MAX=20; int main() { int front ,rear,val,queue[MAX]={0}; char ch; front=rear=-1;//初始化,因为c++编码从0开始,所以表示空队列 while(real<MAX-1&&ch!='E') { cout<<"[I]存入一个数值[G]取出一个数值[E]结束:"; cin>>ch; switch(ch) { case 'I': cout<<"please input value:"; cin>>val; rear++; queue[rear]=val; break; case 'G': if (rear>front) { front ++; cout<<"取出的数为:["<<queue[front]<<"]"; cout<<endl; queue[front]=0; } else { cout<<"队列已经空了”<<endl; exit(0); } break; default: cout<<endl; break; } } if(rear==MAX-1) cout<<"队列已满"<<endl; cout<<"目前队列数据为:"; if (front>=rear) { cout<<“没有"<<endl; cout<<"队列已经空了"<<endl; } else { while (rear>front) { front ++; cout<<"["<<queue[front]<<"]"\t"; } cout<<endl; } system("pause"); return 0; }
队列的链表实现:
5.2队列的应用
主要应用有:
1)广度优先搜索发(BFS);
2)计算机的模拟;
3)CPU的工作进程;
循环队列:
目的:为了节约直线队列在数据移动过程中所浪费的时间;
front指针永远以逆时针方向指向队列中第一个元素前一个位置,rear则指向当前队列的最后一个位置,一开始front和rear均初始化为-1,表示空队列。
其实就是一个环形队列!
优先队列(Priority Queue):
是一种不必遵守队列特性,即先进先出的有序链表,其中每一个元素都赋予一个优先级,加入元素时可以任意加入,但是有最高优先级者则最先输出。
双向队列(Double-ends Queues):
是一种前后两端都可以输入或取出数据的有序链表。两边的指针都往队列的中央移动。
相关文章推荐
- 数据结构1 -- 链表的基本方法实现
- 数据结构4-堆栈
- linux2.6内核的DAC数据结构(传统9Bit模式、ACL模式)
- 数据结构与算法javascript描述之队列
- Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数
- javascript算法与数据结构之栈
- Python 数据结构与算法——侏儒排序
- 数据结构7—线索二叉树 (java)
- 数据结构笔记-----二叉排序树和哈希表
- 数据结构3-链表
- Python 数据结构与算法——归并排序
- Python 数据结构与算法——递归
- Python 数据结构与算法——tree(树)
- Python 数据结构与算法——列表(链表,linked list)
- 数据结构课设 旅游规划(dijkstra扩展)
- 数据结构课设 公路村村通 (最小生成树prim算法)
- 算法浅谈——数据结构
- C语言 数据结构与算法 一
- 数据结构3.1--栈的线性表示
- Python中列表、字典、元组数据结构的简单学习笔记