循环队列
来源:互联网 发布:linux 司机售票员问题 编辑:程序博客网 时间:2024/06/05 06:56
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define MAX_SZ 10
typedef char data_type;
typedef struct
{
data_type * data_array; //定义指向存储数据的空间的指针
int rear; //标记队尾,标记的空间是空闲的
int head; //标记对首
}QueueType,*QueuePtr;
{
if((Q.data_array=(data_type *)malloc(MAX_SZ*sizeof(data_type)))!=NULL)
{
Q.rear=0;
Q.head=0;
}
else
printf("内存分配异常!\n");
}
{
if(Q.head!=Q.rear) //如果不为空
{
printf("%c",Q.data_array[Q.head]);
Q.head=(Q.head+1)%MAX_SZ;
return 1;
}
else
return -1;
}
{
if(((Q.rear+1)%MAX_SZ)==Q.head) //如果已满
{
Delete(Q);
}
Q.data_array[Q.rear] = e;
Q.rear = (Q.rear+1)%MAX_SZ;
}
int main()
{
data_type e;
QueueType Q;
QueueInit(Q);
while((e=getchar())!=0x0a) //回车结束输入
Insert(Q,e);
while(1==Delete(Q)); //取数据,直至取完
return 0;
#include <stdlib.h>
#include <malloc.h>
#define MAX_SZ 10
typedef char data_type;
typedef struct
{
data_type * data_array; //定义指向存储数据的空间的指针
int rear; //标记队尾,标记的空间是空闲的
int head; //标记对首
}QueueType,*QueuePtr;
/****************************************************************
*队列初始化
****************************************************************/
void QueueInit(QueueType &Q){
if((Q.data_array=(data_type *)malloc(MAX_SZ*sizeof(data_type)))!=NULL)
{
Q.rear=0;
Q.head=0;
}
else
printf("内存分配异常!\n");
}
/***********************************************************
*取队首数据
***********************************************************/
int Delete(QueueType &Q){
if(Q.head!=Q.rear) //如果不为空
{
printf("%c",Q.data_array[Q.head]);
Q.head=(Q.head+1)%MAX_SZ;
return 1;
}
else
return -1;
}
/*****************************************************
*
*从队尾插入数据
*如果已满就删除队首数据
*
*****************************************************/
void Insert(QueueType &Q,data_type e){
if(((Q.rear+1)%MAX_SZ)==Q.head) //如果已满
{
Delete(Q);
}
Q.data_array[Q.rear] = e;
Q.rear = (Q.rear+1)%MAX_SZ;
}
int main()
{
data_type e;
QueueType Q;
QueueInit(Q);
while((e=getchar())!=0x0a) //回车结束输入
Insert(Q,e);
while(1==Delete(Q)); //取数据,直至取完
return 0;
}
运行结果:
0 0
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 循环队列
- 修改 Redhat enterprise linux 5 root 密码方法
- 网络日志的地址
- 很忙
- 浏览器从下载文档到显示页面的过程是个复杂的过程
- Android ViewquPager取消预缓存及重新打包android-support-v4.jar的方法
- 循环队列
- 訪西山朝陽古寺
- 标准的git命令使用流程
- 哈希(hash) 之 开放地址法(poj)
- 静态链接库和动态链接库
- 【Git管理】Git 远程操作
- apache.commons.lang.StringUtils&ArrayUtils
- WoSign数字证书产品有何特别优势? ---- UTN-WoSign根证书系统
- PAT 1078. Hashing (25)