您的位置:首页 > 编程语言 > C语言/C++

队列线性表的c语言实现方式 seqqueue.h 和 seqqueue.c

2017-07-09 14:09 441 查看
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 !
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c语言 线性表 队列