队列
来源:互联网 发布:多头螺纹怎样用g92编程 编辑:程序博客网 时间:2024/05/20 04:15
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 3
enum return_result{FULL_OK,FULL_NO,EMPTY_OK,EMPTY_NO,PUSH_OK};
struct queue
{
int queue[MAX_SIZE];
int top;
int buttom;
};
typedef struct queue Queue;
void creat_queue(Queue ** queue)
{
*queue = (Queue *)malloc(sizeof(Queue));
}
void init_queue(Queue ** queue)
{
(*queue)->top = -1;
(*queue)->buttom = -1;
}
int is_full(Queue ** queue)
{
if((*queue)->buttom == -1)
{
if((*queue)->top == MAX_SIZE - 1)
return FULL_OK;
}
else if(((*queue)->top - (*queue)->buttom) + 1 == MAX_SIZE)
{
return FULL_OK;
}
return FULL_NO;
}
int is_empty(Queue ** queue)
{
if((*queue)->top <= (*queue)->buttom)
{
return EMPTY_OK;
}
return EMPTY_NO;
}
int push_queue(Queue ** queue,int num)
{
int i;
if(is_full(queue) == FULL_OK)
{
printf("The queue is full!\n");
exit(FULL_OK);
}
if((*queue)->top <= MAX_SIZE - 1)
{
(*queue)->top++;
(*queue)->queue[(*queue)->top] = num;
}
else
{
for(i = (*queue)->buttom;i <=(*queue)->top;i++)
{
(*queue)->queue[i - (*queue)->buttom] = (*queue)->queue[i];
}
(*queue)->top = (*queue)->top - (*queue)->buttom + 1;
(*queue)->buttom = 0;
(*queue)->top++;
(*queue)->queue[(*queue)->top] = num;
}
return PUSH_OK;
}
int pop_queue(Queue ** queue)
{
if(is_empty(queue) == EMPTY_OK)
{
printf("The queue is empty\n");
exit(EMPTY_OK);
}
++(*queue)->buttom;
return ((*queue)->queue[(*queue)->buttom]);
}
int main()
{
Queue *queue;
int i,ret;
creat_queue(&queue);
init_queue(&queue);
for(i = 0;i < MAX_SIZE;i++)
{
if(push_queue(&queue,i + 1) == PUSH_OK)
{
printf("Push ok\n,Num= %d\n",i + 1);
}
}
for(i = 0;i < MAX_SIZE;i++)
{
ret = pop_queue(&queue);
// if(ret == EMPTY_OK)
printf("Num = %d\n",ret);
}
return 0;
}
0 0
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- 队列
- java中的抽象类abstract关键字
- 有向无环图最长路
- c++变量定义的问题
- POI2014Card
- PL/SQL Developer32位连接Oracle64位数据库步骤
- 队列
- HDU1548:A strange lift(BFS)
- 算法:两个单链表生成相加链表
- HDU 2795 Billboard(线段树)
- 一天一条Linux指令-tsort
- 设计原则之最少知识原则 javascript
- 感知器与线性单元
- UVA713 高精度(1)+相加+去前导0/后缀0
- Android--RecyclerView学习