#ifndef _KN_SEQQUEUE_H_
#define _KN_SEQQUEUE_H_
typedef void SeqQueue;
//创建线性队列
SeqQueue* SeqQueue_Create(int capacity);
//销毁线性队列
void SeqQueue_Destroy(SeqQueue *queue);
//清空线性队列
void SeqQueue_Clear(SeqQueue *queue);
//进队列
int SeqQueue_Append(SeqQueue *queue, void *item);
//出队列
void* SeqQueue_Rertieve(SeqQueue *queue);
//获取队头元素
void* SeqQueue_Header(SeqQueue *queue);
//获取队列的长度
int SeqQueue_Length(SeqQueue *queue);
//获取队列的容量
int SeqQueue_Capacity(SeqQueue *queue);
#endif //_KN_SEQQUEUE_H_
/*
队列:是一种特殊的线性表,只允许在一端进行插入操作,而在另一端进行删除操作的线性表。
队头:允许删除数据元素的一端
队尾:允许插入数据元素的一端
队列不允许在中间部位进行操作
队列是一种先进先出(First In First Out, 简称FIFO)的线性表
*/
#include <stdio.h>
#include "knSeqlist.h"
#include "knSeqqueue.h"
//创建线性队列 相当于创建一个顺序存储的线性表
SeqQueue* SeqQueue_Create(int capacity)
{
return SeqList_Create(capacity);
}
//销毁线性队列
void SeqQueue_Destroy(SeqQueue *queue)
{
SeqList_Destroy(queue);
}
//清空线性队列
void SeqQueue_Clear(SeqQueue *queue)
{
SeqList_Clear(queue);
}
//进队列 相当于 向线性表中的尾部添加一个元素
int SeqQueue_Append(SeqQueue *queue, void *item)
{
return SeqList_Insert(queue, item, SeqList_Length(queue));
}
//出队列 相当于 从线性表中 删除0号位置
void* SeqQueue_Rertieve(SeqQueue *queue)
{
return SeqList_Detete(queue, 0);
}
//获取队头元素
void *SeqQueue_Header(SeqQueue *queue)
{
return SeqList_Get(queue, 0);
}
//获取队列的长度
int SeqQueue_Length(SeqQueue *queue)
{
return SeqList_Length(queue);
}
//获取队列的容量
int SeqQueue_Capacity(SeqQueue *queue)
{
return SeqList_Capacity(queue);
}
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include "knSeqqueue.h"
void test()
{
int i, a[10];
SeqQueue *queue = NULL;
queue = SeqQueue_Create(10);
for (i = 0; i < 5; i++){
a[i] = i + 1;
printf("向队尾插入元素:%d\n", a[i]);
SeqQueue_Append(queue, &a[i]);
}
printf("the header of queue: %d\n", *((int*)SeqQueue_Header(queue)));
printf("the length of queue: %d\n", SeqQueue_Length(queue));
printf("the capacity of queue: %d\n", SeqQueue_Capacity(queue));
//出队列 是删除元素!!
while (SeqQueue_Length(queue) > 0){
printf("从队头删除元素:%d\n", *((int *)SeqQueue_Rertieve(queue)));
}
SeqQueue_Destroy(queue);
}
int main()
{
test();
printf("\n");
system("pause");
return 0;
}