c++:不使用STL标准模板库,实现双端队列

c++:不使用STL标准模板库,实现双端队列

0.简介

最近一个实验验收要求不调用STL标准模板库(standard template library)用c++或c实现双端队列。那么如果使用标准模板库的话怎么实现呢?只需头文件包含deque,然后在代码中直接定义即可,定义参考 deque< int > Name;(上一篇博客已经提到过)。
不用stl直接实现的话也很简单,没有太多算法上的难度,只是稍微有一点繁琐。

1.怎么写

1.1思路

大概思路:
1.首先建立一个循环队列,采用宏定义定义NUM表示循环队列最多容纳的数据个数,也方便修改
2.根据简单算法类比双端队列的功能实现相应的功能,最终达到不采用stl实现双端队列的要求

1.2代码

下面上代码,

#include<iostream>
#include<stdlib.h>
#include<windows.h>
#include<vector>
#include<iomanip>
#include<stdlib.h>
#include<string>
#include<math.h>
//#include<deque>//deque's headfile
using namespace std;
#define NUM 12 //零号单元不用,为判定双端队列是否已满,规定
              // 若front指针==back指针或者front指针在back
              //指针后一位是判定为队列已满。因此总体来说实际
              //空间为NUM - 2.注意!
#define Elemtype int  //可更改元素类型
//--------------循环队列-----------
typedef struct deQueue
{
   
    Elemtype *base;
    int front;
    int back;
} deQueue;
void init(deQueue &Q)
{
   
    Q.base = (Elemtype *)malloc(sizeof(Elemtype) * NUM);
    Q.back = Q.front = 1;//0号不用,判断队列是否满更方便
}
//------------队列功能函数-------------
//这部分算法都很简单,就不详细写了

//队首添加
int push_front(deQueue &Q, int x)
{
   
    if(Q.front < Q.back)
        if(Q.front == 1)
            if(Q.back == NUM - 1)  return 1;//满
            else {
   
                Q.front = NUM - 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值