我是靠谱客的博主 朴素鲜花,最近开发中收集的这篇文章主要介绍LINUX多文件实现队列(C语言)附带Make file,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//主函数测试代码

#include"queue.h"

int main(void)
{
    queue_t queue;
    queue_init(&queue,4);
    for(int i = 10;i<=40;i+=10)
    {
        if(!queue_full(&queue))
        {
            queue_push(&queue,i);
        }
    }
    printf("有效数据个数:%dn",queue_size(&queue));
    for(int j = 0;j<2;j++)
    {
        if(!queue_empty(&queue))
        {
            printf("%d ",queue_pop(&queue));
        }
    }
    printf("有效数据个数:%dn",queue_size(&queue));
    for(int i = 60;i<=70;i+=10)
    {
        if(!queue_full(&queue))
        {
            queue_push(&queue,i);
        }
    }
    printf("有效数据个数:%dn",queue_size(&queue));
    for(int j = 0;j<2;j++)
    {
        if(!queue_empty(&queue))
        {
            printf("%d ",queue_pop(&queue));
        }
    }
    printf("有效数据个数:%dn",queue_size(&queue));
    while(!queue_empty(&queue))
    {
        printf("%d ",queue_pop(&queue));
    }
    printf("有效数据个数:%dn",queue_size(&queue));
    queue_deinit(&queue);
    return 0;
}
 

//定义头文件代码

#ifndef __QUEUE_H
#define __QUEUE_H
#include<stdio.h>
#include<stdlib.h>

typedef struct queue
{
    int *arr;//队列首地址
    int rear;//队尾
    int front;//队首
    int size;//有效数据个数
    int cap;//容量
}queue_t;

//初始化队列
extern void queue_init(queue_t *queue,int cap);
//释放队列内存
extern void queue_deinit(queue_t *queue);
//判断队是否满
extern int queue_full(queue_t *queue);
//判断对视否空
extern int queue_empty(queue_t *queue);
//返回有效数据个数
extern int queue_size(queue_t *queue);
//入队
extern void queue_push(queue_t *queue,int data);
//出队
extern int queue_pop(queue_t *queue);
#endif

//函数实现代码

#include"queue.h"
//初始化队列
void queue_init(queue_t *queue,int cap)
{
    queue->arr = (int *)malloc(sizeof(int)*cap);
    queue->rear = 0;
    queue->front = 0;
    queue->size = 0;
    queue->cap = cap;
}
//释放队列内存
void queue_deinit(queue_t *queue)
{
    free(queue->arr);
    queue->rear = 0;
    queue->size = 0;
    queue->cap = 0;
    queue->front = 0;
}
//判断队是否满
int queue_full(queue_t *queue)
{
    return queue->size >= queue->cap;//满返回1
}
//判断对视否空
int queue_empty(queue_t *queue)
{
    return !queue->size;//空返回1
}
//返回有效数据个数
int queue_size(queue_t *queue)
{
    return queue->size;
}
//入队
void queue_push(queue_t *queue,int data)
{
    if(queue->rear >= queue->cap)
    {
        queue->rear = 0;
    }
    queue->arr[queue->rear++] = data;
    queue->size++;//计数
}
//出队
int queue_pop(queue_t *queue)
{
    if(queue->front >= queue->cap)
    {
        queue->front = 0;
    }
    queue->size--;
    return queue->arr[queue->front++];
}
 

Make file文件内容:注意回车和tab

BIN=queue
OBJ=main.o queue.o
CC=gcc

$(BIN):$(OBJ)
    $(CC) -o $(BIN) $(OBJ)

%.o:%.c
    $(CC) -c -o $@ $<

clean:
    rm $(BIN) $(OBJ)
 

最后

以上就是朴素鲜花为你收集整理的LINUX多文件实现队列(C语言)附带Make file的全部内容,希望文章能够帮你解决LINUX多文件实现队列(C语言)附带Make file所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部