vlambda博客
学习文章列表

C语言的queue,额又来啦

昨天睁开眼看到窗外有一些阳光,不由得暗喜,觉得今天一定是晴天了(高兴以至于出门都不打伞的那种)C语言的queue,额又来啦。可是今天却大失所望,又又又在下雨,还在酣睡C语言的queue,额又来啦C语言的queue,额又来啦。一看时间,哇,8点多了,代码写了吗,书看了吗,又要做咸鱼干吗?赶紧起来,装上电脑,就直奔图书馆C语言的queue,额又来啦C语言的queue,额又来啦

庆幸的是今天是考四六级,我终于有位置了。直接就敲起来了代码,正如标题所说,C语言的queue。不过这次是窗外下着雨,我坐在软软的凳子上,没有茶C语言的queue,额又来啦C语言的queue,额又来啦C语言的queue,额又来啦

好的,我就直接展示我的代码了。


函数名
参数
功能
isFull
const queue
判断队列是否已经满了
isEmpty
const queue 判断队列是否已经空
enqueue
queue,x
进队,x为插入的元素
dequeue
queue,x
出队,x为出队的元素
getLen
const queue
得到队中的数据个数
initqueue
queue
初始化队列,分配数据空间
release
queue
释放队的内存空间


  • 队列的结构体的定义:

typedef struct{    int *base;    int front;    int rear;queue;

  • 判断队空队满:

int isEmpty(const queue *s){    return s->front == s->rear;}
// 少分配一个存储空间int isFull(const queue *s){    return s->front == (s->rear + 1) % MAXSIZE;}

C语言的queue,额又来啦


  • 入队:

// 入队操作int enqueue(queue *s,int x){    if (isFull(s)){        return 0;    }else{        s->base[s->rear] = x;        s->rear = (s->rear + 1) % MAXSIZE;        return 1; }}

  • 出队:

//出队操作int dequeue(queue *s,int *x){ if(isEmpty(s)){ return 0; }else{ *x = s->base[s->front]; s->front = (s->front + 1) % MAXSIZE; return 1; }}


  • 得到队的长度:

//求队的长度int getLen(const queue *s){ return (s->rear - s->front+MAXSIZE)%MAXSIZE;}

  • 初始化队:

// 初始化队列int initqueue(queue *s){ // 开辟MAXSIZE空间 s->base = (int *)malloc(sizeof(int) * MAXSIZE); // 如果分配空间不成功 if(!s->base){ return 0; } s->front = 0; s->rear = 0; return 1;}


  • 销毁队:

//销毁队列void release(queue *s){ free(s->base);}


以上就是队列的基本定义和功能实现的代码了,代码的main部分的测试就不写了,欢迎在下方讨论(您的每一次讨论我都会认真的阅读哟)
沉淀岁月之美 发起了一个读者讨论 今天关于队列的代码存在bug 吗,那些部分还需要改进?

最后感谢您的阅读,更多的精彩内容,欢迎点击下方的搜索来阅读更多精彩文章。


C语言的queue,额又来啦沉淀岁月之美推荐搜索
JavaScript
程序猿小根
Java
程序



C语言的queue,额又来啦


往期回顾  


1.

2.

3.

程序猿小根

记录菜鸟程序猿成长点滴

欢迎您的关注