#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;
}
运行结果: