C语言用数组实现循环队列的入队出队
3个回答
展开全部
//定义一个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];
展开全部
#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++];
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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);
}
#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);
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询