循环队列例程,vc++2008编译
来源:互联网 发布:思迅商云网络断开 编辑:程序博客网 时间:2024/06/06 23:21
#include <stdio.h>
#include <malloc.h>
#include <iostream>
#include <iomanip>
using std::cin;
using std::cout;
using std::endl;
using std::setw;
typedef unsigned char uint8;
typedef unsigned short uint16;
#define SUCC 1
#define ERR 0
#define RQ_BUF_LEN 5
typedef struct
{
uint8 *buf;
uint16 front;
uint16 rear;
}RQ_BUF;
uint8 InitRQ(RQ_BUF *pstrRq)
{
pstrRq->buf = (uint8 *)malloc(RQ_BUF_LEN * sizeof(uint8));
if(pstrRq->buf == NULL)
{
return ERR;
}
pstrRq->front = 0;
pstrRq->rear = 0;
return SUCC;
}
void PrintRQ(RQ_BUF *pstrRq)
{
uint16 tmp = pstrRq->front;
uint8 counter = 0;
while(tmp != pstrRq->rear)
{
if(counter++ >= 5)
{
cout << endl;
counter = 0;
}
cout << pstrRq->buf[tmp] << setw(5);
tmp = (tmp + 1) % RQ_BUF_LEN;
}
cout << endl
<< "buf occupied:"
<< (pstrRq->rear - pstrRq->front + RQ_BUF_LEN) % RQ_BUF_LEN
<< '/'
<< RQ_BUF_LEN
<< endl << endl;
}
void EnterRQ(RQ_BUF *pstrRq)
{
uint8 c;
uint8 user_set;
cin >> c;
if(((pstrRq->rear + 1) % RQ_BUF_LEN) == pstrRq->front)
{
//full
while(1)
{
printf("revolve queue is full,enter 'o' to overwrite or 'c' to cancel/n");
cin >> user_set;
if(user_set == 'o' || user_set == 'O')
{
//overwrite
pstrRq->front = (pstrRq->front + 1) % RQ_BUF_LEN;
pstrRq->buf[pstrRq->rear] = c;
pstrRq->rear = (pstrRq->rear + 1) % RQ_BUF_LEN;
break;
}
else if(user_set == 'c' || user_set == 'C')
{
break;
}
}
}
else
{
pstrRq->buf[pstrRq->rear] = c;
pstrRq->rear = (pstrRq->rear + 1) % RQ_BUF_LEN;
}
PrintRQ(pstrRq);
}
void DelRQ(RQ_BUF *pstrRq)
{
if(pstrRq->front == pstrRq->rear)
{
printf("revolve queue is empty/n");
}
else
{
pstrRq->front = (pstrRq->front + 1) % RQ_BUF_LEN;
if(pstrRq->front == pstrRq->rear)
{
printf("revolve queue is empty/n");
}
else
{
PrintRQ(pstrRq);
}
}
}
uint8 main(void)
{
uint8 c;
RQ_BUF MyRq;
RQ_BUF *pMyRq = &MyRq;
if(SUCC == InitRQ(pMyRq))
{
while(1)
{
printf("Enter 'e' for enter,or 'd' for del/n");
cin >> c;
if(c == 'e' || c == 'E')
{
EnterRQ(pMyRq);
}
else if(c == 'd' || c == 'D')
{
DelRQ(pMyRq);
}
}
}
else
{
printf("Insufficient memory available/n");
}
}
- 循环队列例程,vc++2008编译
- 队列例程
- FreeRTOS 队列例程Demo
- Autoit例程for循环
- VC++2012编程演练数据结构《1》循环双端队列
- VC++2012编程演练数据结构《1》循环双端队列
- VC广播例程
- vc广播例程
- VC++2008编译X264
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 层序遍历二叉树
- const与指针搭配使用总结
- c++之学习程序Matrix_1
- Winforms: Windows 7中Taskbar的新效果(3)——进度条
- pku 1087 A Plug for UNIX 网络流 解题报告
- 循环队列例程,vc++2008编译
- itoa()源码
- 初学ibatis,总结遇到的问题(一)
- MFC学习笔记(二)——简单绘图
- 汇编语言复习之--寻址方式1
- OO思想: 关于C++的接口类
- JavaScript 表单提交校验函数库
- Qt creater系列教程学习笔记——1
- sizeof与strlen的区别