概述
//主函数测试代码
#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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复