seqqueue.h 文件
#ifndef _SEQ_QUEUE_H_
#define _SEQ_QUEUE_H_
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef void Queue;
#ifndef bool
#define bool int
#define true 1
#define false 0
#endif
Queue* SeqQueue_Create(int capacity);
bool SeqQueue_Destory(Queue* queue);
bool SeqQueue_Clear(Queue* queue);
//线性队列中添加元素
bool SeqQueue_Append(Queue* queue, void* item);
//队列中出元素
void* SeqQueue_Retrieve(Queue* queue);
//队列头元素
void* SeqQueue_Header(Queue* queue);
int SeqQueue_GetLength(Queue* queue);
int SeqQueue_GetCapacity(Queue* queue);
#endif
seqqueue.c 文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "seqlist.h"
#include "seqqueue.h"
//队列的线性存储
//创建线性队列相当于创建线性表
Queue* SeqQueue_Create(int capacity)
{
return SeqList_Create(capacity);
}
//销毁线性队列相当于销毁线性表
bool SeqQueue_Destory(Queue* queue)
{
return SeqList_Destroy(queue);
}
//清空线性队列相当于清空线性表
bool SeqQueue_Clear(Queue* queue)
{
return SeqList_Clear(queue);
}
//向队列中插入一个元素相当于在线性表尾部插入或者头部插入,取其一
//假定尾查法
bool SeqQueue_Append(Queue* queue, void* item)
{
return SeqList_InsertOneNode(queue,item,SeqList_GetLength(queue));
}
//队列中出元素相当于从线性表中删除0号位置元素
void* SeqQueue_Retrieve(Queue* queue)
{
return SeqList_DeleteOneNode(queue,0);
}
//获取队列的头部相当于获取线性表的0号位置
void* SeqQueue_Header(Queue* queue)
{
return SeqList_GetOneNode(queue,0);
}
//获取线性队列的长度相当于获取线性表的长度
int SeqQueue_GetLength(Queue* queue)
{
return SeqList_GetLength(queue);
}
//获取线性队列的容量相当于获取线性表的容量
int SeqQueue_GetCapacity(Queue* queue)
{
return SeqList_GetCapacity(queue);
}
/**********************测试代码************************/
/*
void main()
{
int i = 0;
int aa[10] = {0};
Queue* queue = NULL;
queue = SeqQueue_Create(10);
if (queue == NULL)
{
printf("创建线性队列失败");
}
for (i = 0; i < 5; i ++)
{
aa[i] = aa[i] + i + 1;
SeqQueue_Append(queue,&aa[i]);
}
printf("线性队列的容量是:%d \n",SeqQueue_GetCapacity(queue));
printf("线性队列的长度是:%d \n",SeqQueue_GetLength(queue));
printf("线性队列的头元素是:%d \n",*((int*)SeqQueue_Header(queue)));
//出队列
while(SeqQueue_GetLength(queue) > 0)
{
printf("线性队列依次出元素:%d \n",*((int*)SeqQueue_Retrieve(queue)));
}
//销毁队列
SeqQueue_Destory(queue);
system("pause");
}
*/
上述可能会调用其它头文件或源文件,如果遇到,请翻看我的其它博客,对头文件或源文件的实现方式。
good luck !