顺序表(顺序存储)循环队列类(初始化,入队,退队,输出排头与排尾指针及元素)
来源:互联网 发布:广州趣丸网络业绩 编辑:程序博客网 时间:2024/05/22 00:13
循环队列类:文件名 sq_Queue.h
判断队列有无数据根据s的值可判断,如果s=0,则说明为空,反之,不为空时,还要判断是否为满,满的条件是(s==0&&(rear==front));
注意:入队与出队,rear和front 都是加1;
#include <iostream>using namespace std;template <class T>class sq_Queue{private:int mm;//存储空间容量int front;int rear;int s;//标志T * q;public:sq_Queue(int);void prt_sq_Queue();int flag_sq_Queue();void ins_sq_Queue(T);T del_sq_Queue();};template <class T>sq_Queue<T>::sq_Queue(int m){mm=m;q=new T[mm];front=mm;rear=mm;s=0;return;}template <class T>void sq_Queue<T>::prt_sq_Queue(){int i;cout<<"front="<<front<<endl;cout<<"rear="<<rear<<endl;if(s==0){cout<<"队列空"<<endl;return;}i=front;do {i=i+1;if(i==mm+1)i=1;cout<<q[i-1]<<endl;} while (i!=rear);return;}template <class T>int sq_Queue<T>::flag_sq_Queue(){if((s==1)&&(rear==front)){cout<<"队列满"<<endl;return (-1);}if(s==0){cout<<"队列空"<<endl;return 0;}return 1;}template <class T>void sq_Queue<T>::ins_sq_Queue(T b){if((s==1)&&(rear==front)){cout<<"Queue overflow"<<endl;return;}rear=rear+1;if(rear==mm+1)rear=1;q[rear-1]=b;s=1;return;}template <class T>T sq_Queue<T>::del_sq_Queue(){T y;if(s==0){cout<<"queue is empty"<<endl;return (0);}front=front+1;if(front==mm+1)//特别要注意等号“==”而不是“=“front=1;y=q[front-1];if(rear==front)s=0;return y;}
2.具体事例:文件名test3.cpp
#include "sq_Queue.h"#include <stdlib.h>int main(){sq_Queue<int> q(10);cout<<"输出排头与队尾指针已经队中元素"<<endl;q.prt_sq_Queue();q.ins_sq_Queue(50);q.ins_sq_Queue(60);q.ins_sq_Queue(70);q.ins_sq_Queue(80);q.ins_sq_Queue(90);q.ins_sq_Queue(100);cout<<"输出排头与队尾指针已经队中元素"<<endl;q.prt_sq_Queue();cout<<"输出退队元素"<<endl;cout<<q.del_sq_Queue()<<endl;cout<<q.del_sq_Queue()<<endl;cout<<q.del_sq_Queue()<<endl;cout<<"再次输出排头与队尾指针已经队中元素"<<endl;q.prt_sq_Queue();system("pause");//可能是我的vs2010有点问题,ctrl+F5的结果一闪而过,以此采取此方法
return 0;}
3.实验结果
输出排头与队尾指针已经队中元素front=10rear=10队列空输出排头与队尾指针已经队中元素front=10rear=65060708090100输出退队元素506070再次输出排头与队尾指针已经队中元素front=3rear=68090100请按任意键继续. . .
- 顺序表(顺序存储)循环队列类(初始化,入队,退队,输出排头与排尾指针及元素)
- 循环顺序队列(初始化、入队、出队、判空)
- 顺序循环队列 初始化、出队、入队、取队头元素、判空
- 采用顺序存储实现循环队列的初始化、入队、出队操作。
- (六)循环顺序队列的初始化、入队列、出队列
- c++ 实现顺序栈类(初始化,入栈,退栈。读栈顶元素以及顺序输出栈顶指针与栈中的元素<<计算机软件技术基础 徐士良>>
- 链队列、循环队列的实现(初始化、出队、入队、取队头元素、判空)
- C语言实现顺序队列的初始化、入队、出队等操作(三)
- 顺序队列初始化/入队/出队列/判断队空
- C++实现普通队列,循环队列的基本操作(初始化,入队,出队,获取队列首元素等)
- 循环(顺序)队列存储实现
- //使用顺序表实现循环队列的入队和出队
- 数据结构(六)循环队列的基本操作 入队 退队
- 循环队列---顺序存储
- 线性表-顺序队列(循环队列)
- 循环队列(顺序队列)
- 循环队列(顺序队列)
- 顺序队列(循环队列)
- hdoj1159
- 【USACO-Chapter1-1.3】【搜索】Calf Flac
- 基于mjpg-streamer-r63的源码分析之:基础知识详细解释[一]
- 基于mjpg-streamer-r63的源码分析之:基础知识详细解释[二]
- python performance
- 顺序表(顺序存储)循环队列类(初始化,入队,退队,输出排头与排尾指针及元素)
- 递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
- 内存_浅谈C++中内存泄漏的检测
- frameset属性相关设置
- Android的数据存储和IO - 自动朗读(TTS)
- POJ 2253 Frogger (最小生成树.Prim)
- org.hibernate.AnnotationException: @OneToOne or @ManyToOne on com.jpa.entity.Person.idCard refere
- eclipse 上subeclipse 插件
- android源码编译生成ramdisk.img和system.img解压和使用(基于海天雄A9+android2.3.3)