顺序队列(循环队列)
#include <stdio.h>
#include <stdlib.h>
#include "./3.h"
//创建
sequeue* create(void)
{
sequeue* st=(sequeue*)malloc(sizeof(sequeue));
if(st==NULL)
{
printf("失败\n");
return NULL;
}
st->front=st->rear=0;
return st;
}
//判满
int isfull(sequeue* st)
{
return (st->rear+1)%N==st->front ? 1:0;
}
//入队
void insert(sequeue* st,hihi num)
{
if(isfull(st)==1)
{
printf("失败\n");
return;
}
st->data[st->rear]=num;
st->rear=(st->rear+1)%N;
return;
}
//判空
int isempty(sequeue* st)
{
return st->rear==st->front ? 1:0;
}
//出队
hihi out(sequeue* st)
{
if(isempty(st)==1)
{
printf("失败\n");
return (hihi)-1;
}
hihi num=st->data[st->front];
st->front=(st->front+1)%N;
return num;
}
int count(sequeue* st)
{
return(st->rear-st->front+N)%N;
}
//释放队列
void freee(sequeue** st)
{
(*st)->rear=(*st)->front=0;
free(*st);
(*st)=NULL;
return;
}
//遍历
void show(sequeue* st)
{
for(int i=st->front;i!=st->rear;i=(i+1)%N)
{
printf("%d ",st->data[i]);
}
putchar(10);
return;
}