分队列编程
发布时间: 2024-08-05 21:21:00
Ⅰ C语言,用数组实现队列的入队,出队函数编程
这样的话应该符合你的要求:
#include<stdio.h>
voidadd(intqueue[],intx);
intTop(intqueue[]);
voiddel(intqueue[]);
intend=0;
intmain()
{
intn;
scanf("%d",&n);//将要入队列n个元素
intqueue[1000];
for(inti=1;i<=n;i++)//输入n个元素
{
add(queue,i);//将i加入队列
}
//验证加入队列的元素,将队列中的元素按照输入的顺序输出:
for(i=1;i<=n;i++)
{
printf("%d",Top(queue));//Top函数返回队头元素
del(queue);//删除队头元素
}
//验证输出已经出队列后的队列(数组)元素:
printf(" ");
for(i=1;i<=n;i++)
printf("%d",queue[i]);
printf(" ");
return0;
}
voidadd(intqueue[],intx)
{
queue[++end]=x;
}
intTop(intqueue[])
{
returnqueue[1];//注意,这里的函数始终returnqueue[1];这里是和将普通数组中的元素输出最大的不同之处。!!!!!!
}
voiddel(intqueue[])
{
for(inti=2;i<=end;i++)
{
queue[i-1]=queue[i];
}
queue[end]=0;//将删除后的地方置0
end--;
}
Ⅱ C++编程组队列,组队列是个什么概念能不能举个例子
例如课室有8排,5个人要选择坐哪一排,如果
第一个人要坐第2排,
第二个人要坐第3排,
第三个人要坐第1排,
第四个人要坐第2排,
第五个人要坐第1排,
则第2排坐了第1,第4个人,第3排坐了第2个人,第1排坐了第3,第5个人,
那么这5个人组成的整个队列是这样子的:
14235。
需要代码实现吗?
#include<iostream>
#include<cstdio>
#include<cstring>
usingnamespacestd;
constintN=1010;
constintM=100100;
inthead[N],tail[N],en;
intedge[M],nxt[M],pre[M];
intnum[N],use[N],numh,numt;
classQueue
{
voidadd(intx,inty)
{
edge[en]=y;
nxt[en]=tail[x];
pre[nxt[en]]=en;
pre[en]=-1;
if(tail[x]==-1)
{
head[x]=en;
}
tail[x]=en++;
}
public:
Queue()
{
memset(tail,-1,sizeoftail);
memset(use,0,sizeofuse);
numh=numt=en=0;
}
voidEnQueue(intx,intgroup)
{
add(group,x);
if(!use[group])
{
use[group]=1;
num[numt++]=group;
if(numt==N)
numt=0;
}
}
intDeQueue()
{
if(head[num[numh]]==-1)
{
use[num[numh++]]=0;
if(numh==N)
numh=0;
}
int&i=head[num[numh]];
intres=edge[i];
i=pre[i];
returnres;
}
boolempty()
{
returnhead[num[numh]]==-1&&(numh+1)%N==numt;
}
};
intmain()
{
Queueq;
q.EnQueue(1,2);
q.EnQueue(2,3);
q.EnQueue(3,1);
q.EnQueue(4,2);
q.EnQueue(5,1);
while(!q.empty())
cout<<q.DeQueue()<<'';
cout<<endl;
return0;
}