利用順序儲存結構實現雙端佇列的入隊和出隊操作
標頭檔案:函式的宣告
#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 "雙端佇列.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 "雙端佇列.h"
//利用順序儲存結構實現雙端佇列的入隊和出隊操作
int main(void)
{
DQueue Q;
char ch;
Q.end1 = 3;
Q.end2 = 4;
if(!EnQueue(&Q,'a',1))
{
printf("佇列已滿,不能入隊!");
}
else
{
printf("a左端入隊:\n");
}
if(!EnQueue(&Q,'b',1))
{
printf("佇列已滿,不能入隊!");
}
else
{
printf("b左端入隊:\n");
}
if(!EnQueue(&Q,'c',1))
{
printf("佇列已滿,不能入隊!");
}
else
{
printf("c左端入隊:\n");
}
if(!EnQueue(&Q,'d',2))
{
printf("佇列已滿,不能入隊!");
}
else
{
printf("d右端入隊:\n");
}
if(!EnQueue(&Q,'e',2))
{
printf("佇列已滿,不能入隊!");
}
else
{
printf("e右端入隊:\n");
}
printf("佇列左端出隊一次:");
DeQueue(&Q,&ch,1);
printf("%c\n",ch);
printf("佇列左端出隊一次:");
DeQueue(&Q,&ch,1);
printf("%c\n",ch);
printf("佇列右端出隊一次:");
DeQueue(&Q,&ch,2);
printf("%c\n",ch);
printf("佇列右端出隊一次:");
DeQueue(&Q,&ch,2);
printf("%c\n",ch);
return 0;
}
相關文章
- 佇列-順序儲存佇列
- 佇列的順序儲存--迴圈佇列的建立佇列
- 【資料結構】佇列(順序佇列、鏈佇列)的JAVA程式碼實現資料結構佇列Java
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- 佇列的鏈式儲存結構的實現佇列
- @資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》資料結構C++
- 8-佇列的鏈式儲存結構的操作佇列
- 佇列 優先順序佇列 python 程式碼實現佇列Python
- 11 線性表的順序儲存結構
- 線性表之順序儲存結構
- 【資料結構】二叉樹(順序儲存、鏈式儲存)的JAVA程式碼實現資料結構二叉樹Java
- 線性結構(順序儲存和鏈式儲存)和非線性結構的特點及區別
- PTA 雙端佇列 資料結構佇列資料結構
- 資料結構之「雙端佇列」資料結構佇列
- C語言資料結構:鏈式佇列的建立及其出入隊操作C語言資料結構佇列
- 前端學習 資料結構與演算法 快速入門 系列 —— 佇列和雙端佇列前端資料結構演算法佇列
- C#資料結構-二叉樹-順序儲存結構C#資料結構二叉樹
- 三、資料結構演算法-棧、佇列、優先佇列、雙端佇列資料結構演算法佇列
- Python 列表推導及優先順序佇列的實現Python佇列
- 資料結構c語言實現順序表基本操作資料結構C語言
- 資料結構實驗一:順序表的建立與操作實現、順序表實現約瑟夫環問題資料結構
- 全網最適合入門的物件導向程式設計教程:41 Python 常用複合資料型別-佇列(FIFO、LIFO、優先順序佇列、雙端佇列和環形佇列)物件程式設計Python資料型別佇列
- ArrayDeque雙端佇列 使用&實現原理分析佇列
- python資料結構與演算法——棧、佇列與雙端佇列Python資料結構演算法佇列
- 資料結構-js實現棧和佇列資料結構JS佇列
- 線性表的順序儲存C++程式碼實現C++
- 棧1: 順序儲存
- 利用泛型模擬棧結構實現內部鏈式儲存結構泛型
- 第2章 順序表及其順序儲存
- 雙端佇列佇列
- 佇列順序性引發的思考佇列
- 單調佇列雙端佇列佇列
- 原始碼解析C#中PriorityQueue(優先順序佇列)的實現原始碼C#佇列
- (MariaDB/MySQL)MyISAM儲存引擎讀、寫操作的優先順序MySql儲存引擎
- js實現資料結構--佇列JS資料結構佇列
- 封裝優先順序佇列封裝佇列
- 順序結構
- 棧,佇列,優先順序佇列簡單介面使用佇列
- 鏈式儲存的佇列佇列