10.1-5 双端队列deque
来源:互联网 发布:linux shell执行exe 编辑:程序博客网 时间:2024/05/20 16:14
/*双端队列deque,可在两端插入、删除。有MAX+1个位置(MAX个可用)*/#include<stdio.h>#define MAX 6typedef char ElemType;typedef int bool;struct DEQUE{ int head;//指向第一个元素,初值0 int tail;//指向最后元素的下一个位置,初值0 ElemType q[MAX+1];}DQ;void warning(char*s){ puts(s);}bool full()//deque是否满{ return DQ.tail+1==DQ.head||(DQ.tail==MAX&&DQ.head==0);}bool empty()//deque是否空{ return DQ.head==DQ.tail;}void pushfront(ElemType elem)//头端插入{ if(full()) warning("full!"); else{ if(DQ.head==0) DQ.head=MAX; else DQ.head--; DQ.q[DQ.head]=elem; }}void popfront()//头端删除{ if(empty()) warning("empty!"); else{ if(DQ.head==MAX) DQ.head=0; else DQ.head++; }}ElemType frontelem()//头端元素{ return DQ.q[DQ.head];}void pushback(ElemType elem)//尾端插入{ if(full()) warning("full!"); else{ DQ.q[DQ.tail]=elem; if(DQ.tail==MAX) DQ.tail=0; else DQ.tail++; }}void popback()//尾端删除{ if(empty()) warning("empty!"); else{ if(DQ.tail==0) DQ.tail=MAX; else DQ.tail--; }}ElemType backelem()//尾端元素{ return DQ.tail==0?DQ.q[MAX]:DQ.q[DQ.tail-1];}void traverse(){ int i; printf("QUEUE:"); for(i=DQ.head;i!=DQ.tail;i==MAX?(i=0):i++) putchar(DQ.q[i]); putchar('\n'); printf("ARRAY:"); for(i=0;i<=MAX;i++) putchar(DQ.q[i]); putchar('\n');}int main(void){ DQ.head=DQ.tail=0; popfront(); pushfront('a'); traverse(); popback(); traverse(); pushback('z'); pushback('y'); putchar(backelem()); traverse(); pushfront('a'); pushfront('b'); pushfront('c'); pushfront('d'); putchar(frontelem()); traverse(); pushback('w'); pushfront('e'); traverse(); popback(); popfront(); popfront(); traverse(); popback(); popback(); traverse(); popback(); popback(); return 0;}
0 0
- 10.1-5 双端队列deque
- 双端队列Deque
- 双端队列deque
- 双端队列 (deque)
- Deque双端队列容器
- deque双端队列容器
- Deque双端队列容器
- 双端队列(deque)
- deque双端队列容器
- python 双端队列 deque
- 双端队列 の deque
- STL双端队列 deque
- 双端队列(Deque)
- C++deque双端队列
- 双端队列--Deque 容器
- 队列Queue、双端队列Deque
- nyoj1117 鸡蛋队列 (双端队列,deque)
- Java队列Queue、双端队列Deque
- Linux学习笔记----rpm包and rpm命令管理
- 简单密码破译
- H--(LightOJ -- 1008
- 安卓学习笔记(一)自定义控件1
- C++ Primer : 第九章 : vector变长、string的其他操作以及容器适配器
- 10.1-5 双端队列deque
- Zookeeper监控的作用
- ActiveMQ(2) 安装
- 带哨兵的双向链表
- FZU 2087 统计树边
- 如何使用ubuntu14.04中的分区工具
- GDB十分钟教程
- python Image模块安装
- 重载,重定义与隐藏