C语言循环队列的实现方法,C语言循环队列(数组实现)
#include typedef struct queue_arr
{
int * data;
int front;
int rear;
int count;
} que;
//初始化隊列
que * InitQueue()
{
que * q = (que *)malloc(sizeof(que));
q->front = 0;
q->rear = 0;
q->count = 0;//可用于判斷隊空、隊滿
return q;
}
//判斷隊滿
int FullQueue(que * q)
{
//設(shè)置隊列長度為10
if((q->rear+1)%10 == q->front)
return 0;
return 1;
}
//入隊函數(shù)
int EnQueue(que * q, int data)
{
if(FullQueue(q) == 0)
{
return 1;
}
else
{
q->data[q->rear] = data;
q->rear = (q->rear+1)%10;
q->count++;
return 0;
}
}
//出隊函數(shù)
que * DelQueue(que * q, int data)
{
que * del = q;
int tmp = del->front,n = del->count;
if(q->count == 0)//判斷隊空
return q;
while(n)
{
n--;
if(del->data[tmp] == data)
{
del->front = (tmp+1)%10;
del->count = n;
return del;
}
tmp = (tmp+1)%10;
}
return q;
}
//遍歷隊列
void Display(que * q)
{
int i =q->front;
while(i != q->rear)
{
printf("%d ",q->data[i]);
i = (i+1)%10;
}
if(q->count == 0)
printf("隊列為空!");
printf("\n");
}
//測試代碼
int main()
{
que * q;
int i=10;
q = InitQueue();
printf("開始入隊\n");
while(i--)
{
if(EnQueue(q,i) == 1)
printf("隊滿,不能入隊!\n");
else
{
printf("數(shù)字 %d 入隊后,隊列成員為:",i);
Display(q);
}
}
i=10;
printf("開始出隊\n");
while(i--)
{
DelQueue(q,i);
printf("數(shù)字 %d 出隊后,隊列成員為:",i);
Display(q);
}
}
總結(jié)
以上是生活随笔為你收集整理的C语言循环队列的实现方法,C语言循环队列(数组实现)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2014c语言二级考试题,2014计算机
- 下一篇: c语言使单片机输出低电平,单片机开发中的