栈
来源:互联网 发布:淘宝怎么导出订单信息 编辑:程序博客网 时间:2024/04/30 03:20
#include <stdio.h>
#include <stdlib.h>
#define MAX 20
//类型
typedef struct node{
int data[MAX];
int head;
int tail;
}queue_t;
//创建
void create_queue(queue_t* queue)
{
(*queue).tail=0;
(*queue).head=0;
}
//判空
int isnull(queue_t* queue)
{
return (*queue).head==(*queue).tail;
}
int isfull(queue_t* queue)
{
return ((*queue).tail+1)%20==(*queue).head;
}
//入队
int push(queue_t* queue,int data)
{
if(isfull(queue))
return -1;
(*queue).data[(*queue).tail]=data;
(*queue).tail=(((*queue).tail++))%20;
return 0;
}
int pop(queue_t* queue,int* data)
{
if(isnull(queue))
return -1;
*data=(*queue).data[(*queue).head];
(*queue).head=(((*queue).head++))%20;
return 0;
}
//长度
int length_queue(queue_t* queue)
{
return ((*queue).tail-(*queue).head+20)%20;
}
//
int main(int argc, const char *argv[])
{
queue_t queue;
create_queue(&queue);
int i;
int data;
printf("%d\n",isnull(&queue));
for(i=1;i<=20;i++)
{
push(&queue,i);
printf("length_queue:%d\n",length_queue(&queue));
}
printf("%d\n",isfull(&queue));
for(i=1;i<=20;i++)
{
if(pop(&queue,&data)==0)
{
printf("pop data:%d\n",data);
}
}
printf("%d\n",isnull(&queue));
return 0;
}
1 0