队列

来源:互联网 发布:多头螺纹怎样用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
原创粉丝点击