0
点赞
收藏
分享

微信扫一扫

队列的实现(非循环队列)

90哦吼 2022-03-30 阅读 33

顺序队列

#include <stdio.h>
#include <stdlib.h>    //动态内存分配的头文件
#include <stdbool.h>    //bool型变量的头文件

#define maxsize 10    //定义队列的最大长度为10

typedef struct SqQueue    //定义一个顺序队列
{
    int data[maxsize];    //数据域
    int front;    //头指针
    int rear;    //尾指针
}SqQueue;

bool Init_SqQueue(SqQueue *Q)    //初始化顺序队列
{
    Q->front =  Q->rear = 0;
    return true;
}

bool Enqueue(SqQueue *Q)    //入队
{
    if((Q->rear - Q->front) >= maxsize)
    {
        return false;
    }
    else
    {
        printf("请依次输入要入栈的元素(按Ctrl+Z结束输入)");
        int data;
        while(scanf("%d",&data))
        {
            Q->data[Q->rear] = data;
            ++(Q->rear);    
        }
        return true;
    }
}

bool Dequeue(SqQueue *Q,int n)    //出队n个元素
{
    if(n > (Q->rear - Q->front))
    {
        return false;
    }
    else
    {
        printf("弹出的元素为:");
        while(n--)
        {
            printf("%d ",Q->data[(Q->front)++]);
        }
        printf("\n");
        return true;
    }
}

void Print(SqQueue Q)    //打印队列中元素
{
    printf("从队头到队尾,队列中的元素为:");
    for(;Q.front < Q.rear;)
    {
        printf("%d ",Q.data[(Q.front)++]);
    }
    printf("\n");
}

int main()
{
    SqQueue Q;
    Init_SqQueue(&Q);
    Enqueue(&Q);
    Print(Q);
    Dequeue(&Q,3);
    Print(Q);

    return 0;
}

链队列

举报

相关推荐

0 条评论