69,375
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
/** 队列大小 **/
int max_size;
/** 队首 **/
int front;
/** 队尾 **/
int rear;
/** 当前队列长度 **/
int nItem;
/** 队列数组 **/
int *queue = NULL;
/** 所有属性初始化 **/
void init(int maxsize)
{
max_size = maxsize;
queue = (int*)malloc(sizeof(int) * max_size);
front = 0;
rear = -1;
nItem = 0;
}
/** 新数据入队列 **/
void insert(int j)
{
if(rear == max_size - 1)
rear = -1;
queue[++rear] = j;
nItem++;
}
/** 得到队头的数据, 并且移除当前队头数据 **/
int _remove_()
{
int temp = queue[front++];
if(front == max_size)
front = 0;
nItem--;
return temp;
}
/** 得到队头的数据 **/
int peek_front()
{
return queue[front];
}
/** 队列是否为空,1为真,0为假 **/
int is_empty()
{
return nItem == 0;
}
/** 队列是否为满,1为真,0为假 **/
int is_full()
{
return nItem == max_size;
}
/** 释放队列 **/
void release()
{
free(queue);
queue = NULL;
}
int main()
{
init(10);
insert(10);
insert(20);
insert(30);
insert(40);
_remove_();
_remove_();
_remove_();
insert(50);
insert(60);
insert(70);
insert(80);
while(!is_empty())
{
int temp = _remove_();
printf("%d\n", temp);
}
release();
}