栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言 数据结构 循环队列(基于数组)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言 数据结构 循环队列(基于数组)

#include
#include

#define MAXSIZE 10

#define true 1
#define false 0

typedef int ElemType;
typedef int bool;


typedef struct {
    ElemType data[MAXSIZE];
    int front, rear;
}Queue,*SQueue;

bool InitQueue(SQueue *Q) {
    *Q = (SQueue)malloc(sizeof(Queue));
    (*Q)->front = 0;
    (*Q)->rear = 0;
}

bool ISEmpty(SQueue Q) {
    if (Q->front == Q->rear) {
        return true;
    }
    return false;
}
bool IsFull(SQueue Q) {
    if ((Q->rear+1)% MAXSIZE==Q->front) {
        return true;
    }
    return false;
}
bool EnQueue(SQueue Q,ElemType e) {
    if (IsFull(Q)) {
        return false;
    }
    Q->data[Q->rear] = e;
    Q->rear = (Q->rear + 1)%MAXSIZE;
    return true;
}
bool DeQueue(SQueue Q, ElemType *e) {
    if (ISEmpty(Q)) {
        return false;
    }
    *e = Q->data[Q->front];
    Q->front = (Q->front+1) % MAXSIZE;
    return true;
}
//获取队头元素的值
bool GetHead(SQueue Q, ElemType* e) {
    if (ISEmpty(Q)) {
        return false;
    }
    *e = Q->data[Q->front];
    return true;
}
int main() {
    SQueue Q;
    InitQueue(&Q);
    for (int i = 0; i < 4; i++) {
        EnQueue(Q, i);
    }

    ElemType e;
    GetHead(Q, &e);
    printf("%dn", e);

    while(!ISEmpty(Q)) {
        DeQueue(Q, &e);
        printf("%d ", e);
    }

    printf("n");

    system("pause");
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/849983.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号