数组实现队列
【摘要】 数组实现队列结构:
相对栈结构要难搞一些,队列的先进先出的,需要一个数组和三个变量,size记录已经进来了多少个元素,不需要其它萌新看不懂的知识。
触底反弹,头尾追逐的感觉。
循环使用数组。
具体解释一下触底反弹:当我们的队头已经到了数组的底,我们就把对头设为数组的第一个元素,对于队尾也是一样。实现了对数组的循环使用。
#include<stdio.h>...
数组实现队列结构:
相对栈结构要难搞一些,队列的先进先出的,需要一个数组和三个变量,size记录已经进来了多少个元素,不需要其它萌新看不懂的知识。
触底反弹,头尾追逐的感觉。
循环使用数组。
具体解释一下触底反弹:当我们的队头已经到了数组的底,我们就把对头设为数组的第一个元素,对于队尾也是一样。实现了对数组的循环使用。
-
#include<stdio.h>
-
#include<stdbool.h>
-
#define maxsize 10
-
typedef int datatype;
-
typedef struct queue
-
{
-
datatype arr[maxsize];
-
int a,b,size;//头、尾、数量
-
}queue;
-
queue s;
-
void init()//初始化
-
{
-
s.a=0;
-
s.b=0;
-
s.size=0;
-
}
-
int Empty()//判空
-
{
-
if(s.size==0)return 1;
-
return 0;
-
}
-
int full()//判满
-
{
-
if(s.size==maxsize)return 1;
-
return 0;
-
}
-
datatype peek()//查看队头
-
{
-
if(s.size!=0)return s.arr[s.a];
-
printf("queue is null\n");
-
}
-
datatype poll()//弹出队头
-
{
-
int temp=s.a;
-
if(s.size!=0)
-
{
-
s.size--;
-
s.a=s.a==maxsize-1? 0 :s.a+1;//触底反弹
-
return s.arr[temp];
-
}
-
printf("queue is null\n");
-
}
-
int push(datatype obj)//放入队尾
-
{
-
if(s.size!=maxsize)
-
{
-
s.size++;
-
s.arr[s.b]=obj;
-
s.b=s.b==maxsize-1? 0 : s.b+1;//触底反弹
-
return 1;
-
}
-
printf("queue is full\n");
-
return 0;
-
}
-
//测试
-
int main()
-
{
-
int i;
-
init();
-
if(Empty())printf("null\n");
-
for(i=0;i<20;i++)push(i);
-
while(!Empty())
-
{
-
printf("%d\n",poll());
-
}
-
printf("%d",poll());
-
}
文章来源: fantianzuo.blog.csdn.net,作者:兔老大RabbitMQ,版权归原作者所有,如需转载,请联系作者。
原文链接:fantianzuo.blog.csdn.net/article/details/82736862
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)