封装 队列

//声明

#include <stdio.h>

#include <stdlib.h>
#define  N 100
#define datatype char

typedef struct queue 
{
datatype data[N];//保存数据的数组
int front;//数据开头
int rear;//数据结尾
}Q;

//初始化
void init(Q*myqueue);
//判断是否为空
int isempty(Q*myqueue);
//入队
void enQueue(Q*myqueue, datatype num);
//出队
datatype deQueue(Q*myqueue);
//显示队列元素
void showQ(Q*myqueue);
//获取队列开头第一个节点数据

datatype getQhead(Q*myqueue);

//定义

//初始化队列
void init(Q*myqueue)
{
myqueue->front = myqueue->rear = 0;//表示为空
}
//判断是否为空
int isempty(Q*myqueue)
{
if (myqueue->front==myqueue->rear)
{
return 0;//表示头尾重合  就为空

else
{
return 1;
}
}
//入队
void enQueue(Q*myqueue, datatype num)
{
//判断队列是否已经满
if (myqueue->rear==N)//最后一个元素移动到了队列的尾部  表示队列已满
{
printf("队列已满,插入数据失败");
return -1;
}
else
{
//myqueue->data[myqueue->front]//不是front
myqueue->data[myqueue->rear] = num;//赋值
myqueue->rear += 1;//前移增加一个
}
}
//出队
datatype deQueue(Q*myqueue)
{
if (myqueue->front==myqueue->rear)
{
printf("队列为空,无法获取队列中的数据\n");
return -1;

else
{
myqueue->front += 1;//队列前端前移
//return  myqueue->data[myqueue->rear];
return myqueue->data[myqueue->front - 1];//返回弹出的数据
}
}
//显示队列元素
void showQ(Q*myqueue)
{
putchar('\n');
if (myqueue->front==myqueue->rear)
{
printf("队列为空,无法显示队列数据\n");
return -1;

else
{
for (int i = myqueue->front;i<myqueue->rear;i++)
{
//printf("%c<->%-3d    ", myqueue->data[i], myqueue->data[i]);
printf("%c    ", myqueue->data[i]);
}
}
}
//获取队列开头第一个节点数据
datatype getQhead(Q*myqueue)
{
if (myqueue->front==myqueue->rear)
{
printf("队列为空,无法获取队列开头数据\n");
return -1;

else
{
return myqueue->data[myqueue->front];
}
}

//测试

void main()
{
//创建一个结构体变量
Q myQ;
//初始化队列
init(&myQ);
printf("入队  插入数据:");
enQueue(&myQ, 'R');
showQ(&myQ);//显示状态
enQueue(&myQ, 'o');
showQ(&myQ);//显示状态
enQueue(&myQ, 'c');
showQ(&myQ);//显示状态
enQueue(&myQ, 'k');
showQ(&myQ);//显示状态
enQueue(&myQ, 'e');
showQ(&myQ);//显示状态
enQueue(&myQ, 't');
showQ(&myQ);//显示状态


printf("\n出队  显示数据:");
//出队  弹出数据
deQueue(&myQ);
showQ(&myQ);//显示状态
deQueue(&myQ);
showQ(&myQ);//显示状态
deQueue(&myQ);
showQ(&myQ);//显示状态
deQueue(&myQ);
showQ(&myQ);//显示状态
deQueue(&myQ);
showQ(&myQ);//显示状态

 deQueue(&myQ);
  showQ(&myQ);//显示状态
getchar();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveRocket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值