数据结构之顺序队列的实现

上一篇博客我们讲了顺序栈和链式栈的实现,今天我们来看一下顺序队列的实现

#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<stddef.h>
#define HEADER printf("\n==========%s==========\n",__FUNCTION__)
#define MAXSIZE 1000;
typedef char seqqueuetype;
typedef struct seqqueue{
    seqqueuetype data[MAXSIZE];
    size_t head;
    size_t tail;
    size_t size;
}seqqueue;
void seqqueue_init(seqqueue *seq);
void seqqueue_print(seqqueue *seq);
void seqqueue_push(seqqueue *seq,seqqueuetype value);
void seqqueue_poo(seqqueue *seq);
int seqqueue_gettop(seqqueue *seq,seqqueuetype *value);

下面我们进行具体的代码实现

#include "seqqueue.h"
void seqqueue_init(seqqueue *seq)
{
    if(seq == NULL)
    {
        return;
    }
    seq->head = 0;
    seq->tail = 0;
    seq->size = 0;
    return;
}
void seqqueue_print(seqqueue *seq)
{
    if(seq == NULL)
    {
        return;
    }
    if(seq->size == 0)
    {
        return;
    }
    int i = seq->head;
    for(;i<seq->size;i++)
    {
        if(i >= MAXSIZE)
        {
            i = 0;
        }
        printf("[%c] ",seq->data[i]);
    }
    printf("\n");
}
void seqqueue_push(seqqueue *seq,seqqueuetype value)
{
    if(seq == NULL)
    {
        return;
    }
    if(seq->size >=MAXSIZE)
    {
        return;
    }
    seq->data[seq->tail++] = value;

    if(seq->tail >= MAXSIZE)
    {
        seq->tail = 0;
    }
    seq->size++;
    return;

}
void seqqueue_pop(seqqueue *seq)
{
    if(seq == NULL)
    {
        return;
    }
    if(seq->size == 0)
    {
        return;
    }
    seq->head++;

    if(seq->head >= MAXSIZE)
    {
        seq->head = 0;
    }
        size--;
    return


}
int seqqueue_gettop(seqqueue *seq,seqqueuetype *value)
{
    if(seq == NULL||value == NULL)
    {
        return -1;
    }
    if(seq->size == NULL)
    {
        return 0;
    }
    *value = seq->data[seq->head];
    return 1;
}

下面是测试函数以及效果

这里写图片描述
这里写图片描述

这里写图片描述


如有错误,请指出,谢谢

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值