欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 游戏 > 队列的各种操作实现(数据结构C语言多文件编写)

队列的各种操作实现(数据结构C语言多文件编写)

2025/4/19 4:57:57 来源:https://blog.csdn.net/weixin_62659979/article/details/147231089  浏览:    关键词:队列的各种操作实现(数据结构C语言多文件编写)

1.先创建queue.h声明文件(Linux命令:touch queue.h)。编写函数声明如下(打开文件 Linux 操作命令:vim queue.h):

//头文件
#ifndef __QUEUE_H__
#define __QUEUE_H__
//队列
typedef struct queue{int* arr;int in;int out;int cap;int size;
}queue_t;
//队列的操作
//队列的初始化
//queue_t queue; queue.arr queue.in queue.out queue.cap queue.siaze
void queue_init(queue_t* q,int cap);
//队列的释放
void queue_deinit(queue_t* q);
//队列的判空 空 1   非空 0
int queue_empty(queue_t* q);
//队列的判满 满 1   非满 0
int queue_full(queue_t* q);
//入队
void queue_push(queue_t* q,int data);
//出队
int queue_pop(queue_t* q);#endif //__QUEUE_H__

2.创建函数实现文件queue.c(Linux命令:touch queue.c)。写入函数到文件中:

//队列的实现
#include<stdio.h>
#include"queue.h"
#include<stdlib.h>
//从队列的初始化
//queue_t queue;
//queue_init(&queue,5);
void queue_init(queue_t* q,int cap){q->arr= malloc(sizeof(int)*cap);q->in=0;q->out=0;q->cap=cap;q->size=0;
}
//队列的实现释放
void queue_deinit(queue_t* q){free(q->arr);q->arr=NULL;q->in=0;q->out=0;q->size=0;
}
//队列的判空
int  queue_empty(queue_t* q){return q->size==0 ? 1:0;
}
//队列的判满
int queue_full(queue_t* q){return q->size==q->cap ? 1:0;
}
//队列的入队
void queue_push(queue_t* q,int data){if(q->in ==q->cap){q->in=0;}q->arr[q->in++]=data;q->size++;
}
//队列的出队
int queue_pop(queue_t* q){if(q->out==q->cap){q->out=0;}int data=q->arr[q->out];q->out++;q->size--;return data;
}

3.编写主函数调用文件main.c(Linux命令:touch main.c)。编写逻辑操作:

//队列的使用
#include<stdio.h>
#include"queue.h"
#include<stdlib.h>int main(void){//队列printf("队列\n");queue_t queue;printf("初始化\n");queue_init(&queue,6);printf("入队\n");int data=1;while(queue_full(&queue)==0){queue_push(&queue,data);data++;}printf("出队\n");while(queue_empty(&queue)==0){printf("%d ",queue_pop(&queue));}printf("\n");printf("释放\n");queue_deinit(&queue);return 0;
}

4.编译运行

Linux命令:gcc main.c queue.c -o queue

                运行:./queue

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词