C语言用数组实现循环队列的入队出队

 我来答
哥们儿会_臭臭
2016-01-08 · TA获得超过876个赞
知道小有建树答主
回答量:421
采纳率:50%
帮助的人:185万
展开全部
//定义一个int型数组que,长度为N(常量切大于2).
int que[N];
int rear=0,front=0; //队尾 队头

判断队列已满:

if((front+1)%N==rear%N)  //成立则队列已满

判断队列为空

if((rear==front)) //成汪空立困尘瞎则队列空

入队(一般在入队前判断队列是否已满)

//将val入队
que[front++]=val;
front%=N;

出兄掘队(一般在出队前判断队列是否为空)

rear=(rear+1)%N;

下一个要出队的元素(一般先判断是否为空)

que[rear];
这里有狼90
2015-12-26 · TA获得超过3277个赞
知道小有建树答主
回答量:1352
采纳率:35%
帮助的人:231万
展开全部
#include <stdlib.h>
#include "Item.h"

static 拆锋Item *q;
static int N, head, tail;

void QUEUEinit(int maxN)
{
    q 态御闭= (Item *)malloc((maxN+1)*sizeof(Item));
    N = maxN+1;
    head = N;
    tail = 0;
}

int QUEUEempty()
{
    return (head%N == tail);
}

void QUEUEput(Item item)
{
    q[tail++] = item;
    tail = tail%N;
}

Item QUEUEget()
{
   帆裂 head = head %N;
    return q[head++];
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
推荐于2016-11-04 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1336万
展开全部
#include "stdafx.h"
#include<stdio.h>
#define N 200 //预设队列大小
int queue[N];
int flag=0; //队列标识 0为不存在,1为存在
int front=0,rear=0; //队列头,队列尾
void creat() //创建队列
{
if(flag==1)
{printf("队列已经存在。");}
else
{
for(int i=0;i<6;i++)
{
printf("输入初始化的第%d数滑亏:",i);
scanf("%d",&(queue[i]));
}
rear=5; flag=1;
}
}
void enqueue() //进队列
{
if(flag==0)
{printf("当前还没有队列,请先创建队列:");}
else
{
printf("输入进入队列的元素:");
scanf("%d",&queue[rear+1]);
rear++;
}
}
void gethead() //出队列
{
if(flag==0)
{printf("当前还没有队列,请先创建队列:");}
else
{
printf("出队列的元素:%d",queue[front]);
front++;
printf("\n出列后的队列为:");
for(int i=front;i<=rear;i++)
{printf("%d ",queue[i]);}
}
}
void print() //打印当前队列
{
printf("\n当前队列为:");
for(int i=0;i<=rear;i++)
{
printf("%d ",queue[i]);
}

}
int main()
{
int servse=-1; //服务标识
while(servse!=0)
{
printf("\n1.创建队列\n");
printf("2.元素进队\n");
printf("3.元素出列\n");
printf("4.打印队列\n");
printf("0.退出\n");
printf("选择:");
scanf("%d",&servse);
switch(servse)
{
case 1:creat();break;
case 2:enqueue();break;
case 3:gethead();break;
case 4:print();break;
case 0:return 0;break;
}
}
}
08-12-27 | 添加评论
0

xingzhenlive

你说的是谨让吵冒泡法排序吧?这个你直接上资源吧里面去吧他里面有提供详细的源代码的!不好意思我就不给你找了!非常抱歉~!
08-12-27 | 添加评论
0

htj1192

#include "stdafx.h"
#include<stdio.h>
#define N 200 //预设队列大小
int queue[N];
int flag=0; //队列标祥侍识 0为不存在,1为存在
int front=0,rear=0; //队列头,队列尾
void creat() //创建队列
08-12-27 | 添加评论
0

tj568738985

/*顺序队的基本操作*/
#include <stdio.h>
#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType queue[MaxSize];
int front,rear;
} queuetype;
void initqueue(queuetype *Q)
{
Q->front=Q->rear=-1;
}
void enter(queuetype *Q,ElemType x)
{
if (Q->rear==MaxSize) printf("队列上溢出!\n");
else
{
Q->rear++; /*队尾指针后移*/
Q->queue[Q->rear]=x; /*新元素赋给队尾单元*/
}
}
void delete(queuetype *Q)
{
if (Q->front==Q->rear)
printf("队列为空!\n");
else
Q->front++;
}
ElemType gethead(queuetype *Q)
{
if (Q->front==Q->rear)
printf("队列为空!\n");
else
return(Q->queue[Q->front+1]);
}
int empty(queuetype *Q)
{
if (Q->front==Q->rear) return(1); /*为空,则返回true*/
else return(0); /*不为空,则返回flase*/
}
void display(queuetype *Q)
{
int i;
printf("队列元素:");
for (i=Q->front+1;i<=Q->rear;i++)
printf("%c ",Q->queue[i]);
printf("\n");
}
main()
{
queuetype *qu;
printf("初始化队列qu\n");
initqueue(qu);
printf("队列空:%d\n",empty(qu));
printf("依次入队a,b,c,d元素\n");
enter(qu,'a');
enter(qu,'b');
enter(qu,'c');
enter(qu,'d');
display(qu);
printf("出队一次\n");
delete(qu);
printf("队首元素:%c\n",gethead(qu));
printf("出队一次\n");
delete(qu);
display(qu);
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式