#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("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("Quece is empty.\n");
exit(EMPTY_OK);
}
return (quece->quece[++(quece->buttom)]);
}
int main()
{
Quece *quece;
int i;
create_quece(&quece);
init_quece(quece);
for(i = 0; i < 10; i++)
{
if(push_quece(quece,i+1) == PUSH_OK)
{
printf("push num: %d\n",i+1);
}
}
for(i = 0; i < 10; i++)
{
printf("pop num: %d\n",pop_quece(quece));
}
return 0;
}
C语言 顺序队列
最新推荐文章于 2023-07-28 21:55:57 发布