copyright (C), 2014-2015, Lighting Studio. Co., Ltd.
File name:
Author:Jerey_Jobs Version:0.1 Date:
Description:
Funcion List:
*****************************************************/
#include <stdio.h>
#include <stdlib.h>
#define max_size 10
enum return_result{
FULL_OK,FULL_NO,EMPTY_OK,EMPTY_NO,PUSH_OK
};
struct quece_data
{
int quece[max_size];
int top;
int buttom;
};
typedef struct quece_data Quece;
void create_quece(Quece **quece)
{
*quece=(Quece *)malloc(sizeof(struct quece_data));
}
void init_quece(Quece **quece)
{
(*quece)->top=-1;
(*quece)->buttom=-1;
}
int is_full(Quece **quece)
{
if((*quece)->buttom==-1)
{
if((*quece)->top==max_size-1)
return FULL_OK;
}
else if((((*quece)->top-(*quece)->buttom)+1)==max_size)
{
return FULL_OK;
}
return FULL_NO;
}
int is_empty(Quece **quece)
{
if((*quece)->top<=(*quece)->buttom)
{
return EMPTY_OK;
}
return EMPTY_NO;
}
int push_quece(Quece **quece,int num)
{
int i;
if(is_full(quece)==FULL_OK)
{
printf("the quece is full!\n");
exit(FULL_OK);
}
if((*quece)->top<max_size-1)
{
((*quece)->top)++;
((*quece)->quece[(*quece)->top])=num;
}
else
{
for(i=(*quece)->buttom;i<=(*quece)->top;i++)
{
(*quece)->quece[i-(*quece)->buttom]=(*quece)->quece[i];
}
(*quece)->top=(*quece)->top-(*quece)->buttom+1;
(*quece)->buttom=0;
((*quece)->top)++;
((*quece)->quece[(*quece)->top])=num;
}
return PUSH_OK;
}
int pop_quece(Quece **quece)
{
if(is_empty(quece)==EMPTY_OK)
{
printf("the quece is empty!");
exit(EMPTY_OK);
}
return ((*quece)->quece[++((*quece)->buttom)]);
}
int main()
{
Quece *quece;
create_quece(&quece);
init_quece(&quece);
int i=0;
for(i;i<10;i++)
{
if(push_quece(&quece,i+1)==PUSH_OK)
{
printf("push num:\t %d\n",i+1);
}
}
for(i=0;i<10;i++)
{
printf("pop num:\t %d\n",pop_quece(&quece));
}
return 0;
}