資料結構之順序佇列的實現
阿新 • • 發佈:2019-02-10
上一篇部落格我們講了順序棧和鏈式棧的實現,今天我們來看一下順序佇列的實現
#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;
}
下面是測試函式以及效果
如有錯誤,請指出,謝謝