当前位置: 首页 > news >正文

队列的各种操作实现(数据结构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

相关文章:

  • 从零构建大模型之Transformer公式解读
  • 大联盟(特别版)双端互动平台完整套件分享:含多模块源码+本地部署环境
  • QT Sqlite数据库-教程002 查询数据-上
  • Java集合框架深度解析:核心接口、实现类与应用场景
  • Android基础入门、Android常见界面布局基础练习
  • 回溯-day65
  • Neovim安装及lazy配置
  • ADI的BF561双核DSP怎么做开发,我来说一说(十六)触摸屏的设计
  • QT Sqlite数据库-教程002 查询数据-下
  • 操作系统导论——第19章 分页:快速地址转换(TLB)
  • Vue.js 项目中 vue.config.js 常用配置项解析
  • bash的特性-命令和文件自动补全
  • Linux - 系统服务管理(Systemd)
  • qt中的正则表达式
  • 【记录】Docker 镜像
  • Java-面向对象
  • ffprobe是如何处理命令行参数的.
  • BFD:网络链路检测与联动配置全攻略
  • 易境通WMS系统代理仓解决方案:让代理仓管理无后顾之忧!
  • 07软件测试需求分析案例-修改用户信息
  • 赵志丹任中国地质大学(北京)校长
  • 驯服象牙塔:美国政府对大学的战争是一场善恶对抗吗
  • 特朗普特使将赴俄见普京,俄方:美俄间谈判艰难且耗时
  • 上海消保委调查二次元消费:手办与卡牌受欢迎,悦己和社交是动力
  • 我们的免疫系统,是世界上最好的“医生”
  • 特朗普“炮轰”美联储带崩美股!道指跌超900点,黄金再创新高