C簡單隊列實現
#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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.