标签:
//循环队列
//杨鑫
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
typedef int QElemType;
typedef struct queue
{
QElemType elem[MAXSIZE];
int front;
int rear;
}SqQueue; //定义队头
int init_Queue(SqQueue **q) //初始化
{
(*q)->front = 0;
(*q)->rear = 0;
}
int is_Full(SqQueue *q)
{
if(q->front == (q->rear + 1) % MAXSIZE) //判满 刘勉刚
return 1;
else
return 0;
}
int insert_Queue(SqQueue **q, QElemType elem)
{
if(is_Full(*q))
return -1;
(*q)->elem[(*q)->rear] = elem;
(*q)->rear = ((*q)->rear + 1) % MAXSIZE; //插入
return 0;
}
int is_Empty(SqQueue *q)
{
if(q->front == q->rear) //判空
return 1;
else
return 0;
}
int delete_Queue(SqQueue ** q, QElemType *pelem)
{
if(is_Empty(*q))
return 0;
*pelem = (*q)->elem[(*q)->front];
(*q)->front = ((*q)->front + 1)%MAXSIZE;
return 0;
}
int main()
{
int i=0, elem, count = 0;
SqQueue *q=(SqQueue *)malloc(sizeof(SqQueue));
init_Queue(&q);
printf("=========================分割线=====================\n");
printf("正在向循环队列中插入元素!\n");
for(i = 0; i < 10; i++)
{
insert_Queue(&q, i);
count++;
}
printf("入队完毕!\n");
printf("=========================分割线=====================\n");
printf("循环队列中共有元素: %d 个\n", count);
printf("循环队列中的元素有:\n");
for(i = 0; i < count; i++)
{
printf("%d\t", i);
}
printf("\n");
printf("=========================分割线=====================\n");
printf("删除队列中前5个元素:\n");
printf("正在删除请稍后:\n");
for(i = 0; i < 4; i++)
{
delete_Queue(&q, &elem);
printf("将:%d 删除\n", elem);
count--;
}
printf("=========================分割线=====================\n");
printf("循环队列中共有元素: %d 个\n", count);
printf("删除操作后循环队列中的元素有:\n");
for(i = 1; i <= count; i++)
{
printf("%d\t", elem+i);
}
printf("\n");
printf("=========================分割线=====================\n");
return 0;
}
结果如图:
标签:
原文地址:http://blog.csdn.net/u012965373/article/details/45889443