1. 程式人生 > >資料結構之順序佇列的實現

資料結構之順序佇列的實現

上一篇部落格我們講了順序棧和鏈式棧的實現,今天我們來看一下順序佇列的實現

#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; }

下面是測試函式以及效果

這裡寫圖片描述
這裡寫圖片描述

這裡寫圖片描述

如有錯誤,請指出,謝謝