/*
* 用c语言实现顺序队列(采用少用一个存储空间的方式解决假溢出问题)
*/
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
typedef struct queue
{
//保存队列中的元素
int *a;
//保存队列头部元素的索引
int front;
//保存队列尾部元素的索引
int rear;
//保存队列中最多容纳的元素个数
int max;
}qu;
/*
* 初始化队列
*/
qu *initqueue(int num)
{
qu *q=(qu *)malloc(sizeof(qu));
if(q==NULL)
{
printf("create fail!\n");
exit(1);
}
q->front=0;
q->rear=0;
q->max=num;
q->a=(int *)malloc(sizeof(int)*num);
if(q->a==NULL)
{
printf("create fail!\n");
exit(1);
}
return q;
}
/*
* 判断队列是否为空(空:返回0 非空;返回1)
*/
int isempty(qu *q)
{
if(q->front==q->rear)return 0;
else return 1;
}
/*
* 判断队列是否为满(满:返回0 非满:返回1)
* (采用少占用一个空间的方式判断队列是否为满,即(rear+1)%max==front
*/
int isfull(qu *q)
{
//队列满的判断条件(少用一个存储空间)
if((q->rear+1)%q->max==q->front)return 0;
else return 1;
}
/*
* 查看队列中的元素个数
*/
int getnum(qu *q)
{
if(isempty(q)==0)return 0;
else
{
int count=(q->rear-q->front+q->max)%q->max;
return count;
}
}
/*
* 入队列
*/
void push(qu *q,int value)
{
if(isfull(q)==0)
{
printf("队列为满,无法入队!\n");
exit(1);
}
q->a[q->rear]=value;
q->rear=(q->rear+1)%q->max;
}
/*
* 出队列
*/
int pop(qu *q)
{
if(isempty(q)==0)
{
printf("队列为空,无法出队!\n");
exit(1);
}
int temp=q->a[q->front];
q->front=(q->front+1)%q->max;
return temp;
}
/*
* 查看队列首部元素
*/
int peek(qu *q)
{
if(isempty(q)==0)
{
printf("队列为空,无法查看!\n");
exit(1);
}
int temp=q->a[q->front];
return temp;
}
int main()
{
int num=5;
int temp;
qu *q=initqueue(num);
push(q,1);
push(q,2);
push(q,3);
push(q,4);
pop(q);
pop(q);
pop(q);
pop(q);
push(q,1);
push(q,2);
push(q,3);
// push(q,4);
// push(q,5);
int count=getnum(q);
printf("count=%d\n",count);
return 0;
}
分享到:
相关推荐
C语言实现的顺序队列
用c语言实现顺序表的多种功能
C语言实现循环队列
用C实现的栈与队列,可以加载使用。详见博文http://blog.csdn.net/pirateleo/article/details/7574598 共包含5个文件
用c语言实现的,简单易懂,希望对大家有用。
C语言实现多级反馈队列调度算法-计算机操作系统实验。C语言实现多级反馈队列调度算法-计算机操作系统实验。
C语言实现队列
c语言实现的循环队列,附代码,标准实验报告
51单片机串口接收使用队列C语言实现
队列源码,文章《也没想象中那么神秘的数据结构-先来后到的“队列”》系列示例代码
c语言实现队列功能,push、pop多字节与单字节,方便调用。
C语言数据结构实现顺序表的动态申请内存并且合并,代码可以直接使用。
c语言实现队列功能,push、pop多字节与单字节,方便调用。
用C语言实现了栈和队列的数据结构形式,其中包括栈和队列的初始化,压栈弹栈,进队出堆。和一些其他的基本操作!
C语言的基础,数据结构的基础,清晰实现算法结构
队列 C语言 数据结构队列
c语言实现的链式队列、顺序队列还有循环队列的建立。代码完整可以直接运行的。
在项目中已经使用的,用C语言实现块队列。 1、queue_dt_init初始化块队列。 2、 queue_dt_in将数据放入队列。 3、queue_dt_out从队列取出数据。
主要为大家详细介绍了C语言实现顺序表的顺序查找和折半查找,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
C语言实现循环队列的基本运算,建立、入队、出队,简单易懂。