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

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 !

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值