上一篇博客我们讲了顺序栈和链式栈的实现,今天我们来看一下顺序队列的实现
#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;
}
下面是测试函数以及效果
如有错误,请指出,谢谢