简单队列实现

#ifndef QUEUE_H


#define QUEUE_H


typedef struct Queue_Node * qnode;


struct Queue_Node{
void * data;
};


unsigned long queue_len;


long queue_front;


unsigned long queue_rear;


qnode * init_queue(unsigned long len);


void en_queue(qnode * queue,void * val);


qnode de_queue(qnode * queue);


void free_queue(qnode * queue);


#endif


#include <stdio.h>
#include <stdlib.h>
#include "Queue.h"


qnode * init_queue(unsigned long len){
if(0==len) return NULL;
queue_len=len;
queue_front=-1;
queue_rear=0;
qnode * r=calloc(len,sizeof(qnode));
return r;
}


void en_queue(qnode * queue,void * val){
if(NULL==queue) return;
if(queue_front==queue_rear % queue_len){
printf("\nqueue full....\n");
return;
}
if(-1==queue_front){
queue_front=0;
}
qnode t=malloc(sizeof *t);
t->data=val;
printf("%d ",*((int *)(t->data)));
queue[queue_rear]=t;
queue_rear=(queue_rear+1) % queue_len;
}


qnode de_queue(qnode * queue){
if(NULL==queue) return NULL;


if(-1==queue_front){
printf("queue empty...\n");
return NULL;
}


qnode r=queue[queue_front];
queue_front=(queue_front+1) % queue_len;


return r;
}


void free_queue(qnode * queue){
if(NULL==queue) return;
int i;
for(i=0;i<queue_len;i++){
if(NULL!=queue[i]){
continue;
}
free(queue[i]);
}
free(queue);
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值