双端队列的应用

摘要:
双端队列是一种特殊队列。它是在线性表的两端对插入和删除操作限制的线性表。双端队列能够在队列的不论什么一端进行插入删除操作。=DQ-˃end1){DQ-˃end2=%QUEUESIZE;*e=DQ-˃queue[DQ-˃end2];return1;}else{return0;}break;}return0;}#include"DQ.h"//利用顺序存储结构实现双端队列的入队和出队操作intmain{DQueueQ;charch;Q.end1=3;Q.end2=4;if(!EnQueue){printf("队列已满,不能入队!");}else{printf;}printf;DeQueue;printf;printf;DeQueue;printf;printf;DeQueue;printf;printf;DeQueue;printf;return0;}执行结果例如以下:
双端队列是一种特殊队列。它是在线性表的两端对插入和删除操作限制的线性表。双端队列能够在队列的不论什么一端进行插入删除操作。
#include <stdio.h>  
#define QUEUESIZE 8  
typedef char ElemType;  
typedef struct DQueue  
{  
    ElemType queue[QUEUESIZE];  
    int end1;  
    int end2;  
}DQueue;  
  
int EnQueue(DQueue *DQ,ElemType e,int tag);  
int DeQueue(DQueue *DQ,ElemType *e,int tag);  



#include "DQ.h"  
  
int EnQueue(DQueue *DQ,ElemType e,int tag)  
{  
    switch(tag)  
    {  
    case 1:  
        if(DQ->end1 != DQ->end2)  
        {  
            DQ->queue[DQ->end1] = e;  
            DQ->end1 = (DQ->end1-1)%QUEUESIZE;  
            return 1;  
        }  
        else  
        {  
            return 0;  
        }  
        break;  
    case 2:  
        if(DQ->end1 != DQ->end2)  
        {  
            DQ->queue[DQ->end2] = e;  
            DQ->end2 = (DQ->end2+1)%QUEUESIZE;  
            return 1;  
        }  
        else  
        {  
            return 0;  
        }  
        break;  
    }  
    return 0;  
}  
  
int DeQueue(DQueue *DQ,ElemType *e,int tag)  
{  
    switch(tag)  
    {  
    case 1:  
        if((DQ->end1+1)%QUEUESIZE != DQ->end2)  
        {  
            DQ->end1 = (DQ->end1+1)%QUEUESIZE;  
            *e = DQ->queue[DQ->end1];  
            return 1;  
        }  
        else  
        {  
            return 0;  
        }  
        break;  
    case 2:  
        if((DQ->end2-1)%QUEUESIZE != DQ->end1)  
        {  
            DQ->end2 = (DQ->end2-1)%QUEUESIZE;  
            *e = DQ->queue[DQ->end2];  
            return 1;  
        }  
        else  
        {  
            return 0;  
        }  
        break;  
    }  
    return 0;  
}  




#include "DQ.h"  
//利用顺序存储结构实现双端队列的入队和出队操作  
int main(void)  
{  
    DQueue Q;  
    char ch;  
    Q.end1 = 3;  
    Q.end2 = 4;  
    if(!EnQueue(&Q,'a',1))  
    {  
        printf("队列已满,不能入队。");  
    }  
    else  
    {  
        printf("a左端入队:
");  
    }  
    if(!EnQueue(&Q,'b',1))  
    {  
        printf("队列已满,不能入队!");  
    }  
    else  
    {  
        printf("b左端入队:
");  
    }  
        if(!EnQueue(&Q,'c',1))  
    {  
        printf("队列已满。不能入队。");  
    }  
    else  
    {  
        printf("c左端入队:
");  
    }  
        if(!EnQueue(&Q,'d',2))  
    {  
        printf("队列已满。不能入队!");  
    }  
    else  
    {  
        printf("d右端入队:
");  
    }  
        if(!EnQueue(&Q,'e',2))  
    {  
        printf("队列已满,不能入队!

"); } else { printf("e右端入队: "); } printf("队列左端出队一次:"); DeQueue(&Q,&ch,1); printf("%c ",ch); printf("队列左端出队一次:"); DeQueue(&Q,&ch,1); printf("%c ",ch); printf("队列右端出队一次:"); DeQueue(&Q,&ch,2); printf("%c ",ch); printf("队列右端出队一次:"); DeQueue(&Q,&ch,2); printf("%c ",ch); return 0; }

执行结果例如以下:

双端队列的应用第1张

免责声明:文章转载自《双端队列的应用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇rownum与rowIdJSP三大指令下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue前端上传图片并回显,同时获取文件的base64编码

<el-form-item label="部位缩略图:" required> <div class="upload-img" style=" 148px; height: 100px;" > <input type="file" ref="...

iOS: iOS各种设备信息获取

Author:si1ence Link:http://www.jianshu.com/p/b23016bb97af 为了统计用户信息、下发广告,服务器端往往需要手机用户设备及app的各种信息,下面讲述一下各种信息的获取方式: 点击下载以上展示效果的GitHub源码 一行代码就搞定的统一来! // 这个方法后面会列出来 NSString...

MySqlHelper、CacheHelper

MySqlHelper代码: using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Data; using M...

基于ALSA的WAV播放和录音程序

http://blog.csdn.net/azloong/article/details/6140824 这段时间在探索ALSA架构,从ALSA Core到ALSA Lib,再到Android Audio System。在看ALSA Lib时,写了一个比较典型的基于ALSA的播放录音程序。程序包包含四个部分: WAV Parser是对WAV文件的分析和封装...

循环结构实验

第五章 循环结构实验   C程序设计实验报告 实验项目: 1、用for语句实现循环 2、用while循环语句实现循环 3、用do_while语句实现循环 4、用while语句和for语句配合实现循环 5、用for语句嵌套实现循环 姓名:陈建清实验地点:教学楼514教室  实验时间:2019.4.17 一、实验目的与要求 1、用for语句实现循环 目的:掌...

Linux环境下实现对文件读写操作

Linux环境下实现对文件读写操作 ---- 今天分享一下在linux系统在实现对文件读写一些基本的操作,在这之前我们要掌握一些基本的技能在Linux环境下。比如查看命令和一个函数的具体用法,就是相当于查手册,在Linux下有一个man手册非常有用:man查询手册man 1 +命令 这里的1表示为查询的是Linux命令man 2 xxx 这里的2表示为查...