模板实现循环队列

const int MAXSIZE = 10;

#define MAX_BUF 10;
#include <assert.h>
template<class T>
class Queue
{
private:
T array1[MAXSIZE];
int rear;
int front;

public:
void Qpush(const T&copy);
T pop();
Queue(int rear1=0,int front1=0):rear(rear1),front(front1){}

};

template<class T>
void Queue<T>::Qpush(const T&copy)
{ int tmp=(rear+1)%MAXSIZE ;
assert(tmp!=front); 

array1[rear]=copy;
rear=(rear+1)%MAXSIZE ;

}
template<class T>
T Queue<T>::pop(){
T tmp=array1[front];
front=(front+1)%MAXSIZE ;
return tmp;
}

  

#include<iostream>
using namespace std;
#include"Queue.h"
int main(){
    Queue<int> s1;
    s1.Qpush(5);
    s1.Qpush(18);
    int temp=s1.pop();
    cout<<temp<<endl;

}

时间: 2024-10-10 14:51:20

模板实现循环队列的相关文章

模板实现C++队列(顺序存储)

c++模板实现一个队列,包括查 插 删 改,求并集和交集,主要是想研究一下数据结构和算法,然后结合C++ template 实现一下,这个是第一个,这个分类里面的源代码没有追求尽善尽美,如果感觉有的借鉴就去去借鉴,如果感觉写的不好也别拍砖,谢谢…… 模板头文件如下 1 #ifndef SEQUENCELIST_H 2 #define SEQUENCELIST_H 3 4 //template of sequence list 5 //implicit interface of T , opera

循环队列(Circular Queue)

循环队列(Circular Queue) 1. 循环队列的概念 1.1 循环队列的定义 为了能够充分地使用数组中的存储空间,克服"假溢出"现象,可以把数组的前端和后端连接起来,形成一个环形的表,即把存储队列元素的表从逻辑上看成一个环,成为循环队列(circular queue). 1.2 循环队列中各元素的逻辑及存储关系 循环队列的首尾相接,当队头指针front和队尾指针rear进到maxSize-1后,再前进一个位置就自动到0.这可以利用除法取余的运算(%)来实现. (1)队头指针进

数据结构之循环队列c语言实现

    队列是一种先入先出的结构,数据从队列头出,队尾进.在linux内核中进程调度,打印缓冲区都有用到队列.     队列有多种实现方式,可以用链表,也可以用数组.这里用数组来实现一个简单的循环队列.首先创建一个大小为8的队列如下,队列头尾指针指向同一块内存,          当从队列尾部插入一个数据后变成下面的情形,为了便于处理,这里始终会浪费一个空间 继续插入数据,直到出现以下情形,表示队列满了, 接下来看一下出队的情形,从队列头出队3个元素, 再添加三个元素后队列又变成满的了, 在上面

47 _ 循环队列程序演示.swf

通过上面的分析我们已经对循环队列很了解了,现在我们来学习下循环队列的实现形式 1.代码使用数组现实循环队列 #include<stdio.h> #include<malloc.h> #include <stdio.h> #include <stdlib.h> typedef struct Queue{ int * data;//存储的数据,指向一个数组 int font ;//队列数据删除 int rear;//队列数据的添加 }QUEUE ,*PQUEUE

多线程与循环队列

多线程使用循环队列其实也不是个很难的东西,在工作中遇到了一个队列行为非常古怪,怎么也想不通,一直都没有认证对待这些,有点怵,所以这回想认真对待一下. 多线程使用循环队列主要就是要避免两个线程同时操作队列,加个锁就可以很容易的实现,win32中用临界区就可以做到. 代码: // CirQueue.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <Wi

数据结构Java实现07----队列:顺序队列&amp;顺序循环队列、链式队列、顺序优先队列

数据结构Java实现07----队列:顺序队列&顺序循环队列.链式队列.顺序优先队列 一.队列的概念: 队列(简称作队,Queue)也是一种特殊的线性表,队列的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置插入和删除,而队列只允许在其一端进行插入操作在其另一端进行删除操作. 队列中允许进行插入操作的一端称为队尾,允许进行删除操作的一端称为队头.队列的插入操作通常称作入队列,队列的删除操作通常称作出队列. 下图是一个依次向队列中插入数据元素a0,a1,...,an-

每日一题19:循环队列

基于数组实现的循环队列,这个比基于链表实现的稍微麻烦一点,需要浪费一个存储空间.如果全部利用,则编程将会变得更加繁琐,并且更容易出错. // LoopQueue.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; struct loop_queue { int capacity; int head; int tail; int *vals; }; loop_

(一)循环队列

队列可以使用数组或者链表实现,这里介绍一种使用数组实现的循环队列. 所谓循环队列,是指当尾指针超过数组索引界限时,通过取余运算返回数组起始端,只要保证尾指针和头指针不相遇,就可以继续存储元素. 首先设定队列的大小,并建立队列结构体: #define MAXSIZE 100001 typedef struct { int items[MAXSIZE]; int front; int rear; }Queue; 设头指针和尾指针指向同一索引时队列为空,起始时均在索引0处. void initQueu

hdu 1175 连连看(模拟循环队列)

连连看 Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 18149    Accepted Submission(s): 4741 Problem Description "连连看"相信很多人都玩过.没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子.如果某两个相同的棋子,可以通过一条线连起来(这条