什么是队列? 队列就是一种先进先出的数据结构,如下图。
(画风不好) 我们来试着存一下队列:
#include<bits/stdc++.h>
using namespace std;
int f,l,n,a[10001];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++){
a[++l]=i;
}
while(f<l){
f++;
cout<<a[f]<<" ";
}
return 0;
}
你发现它和数组没有什么差别,可是对于线性数据结构,大多数都是可以用数组实现的,接着你会发现它多了一个首指针和一个尾指针,这可以用于控制。
再看看“map”:
#include<bits/stdc++.h>
using namespace std;
int q[100005][3],a[101][101],p[101][101],n,m,f,l;
int d[5][3]={{1,0},{0,1},{-1,0},{0,-1}};
int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++){
scanf("%d",&a[i][j]);
}
l=1,f=0;
q[l][0]=1;
q[l][1]=1;
p[1][1]=1;
while(f<l){
f++;
int x=q[f][0],y=q[f][1];
for(int i=0;i<4;i++){
int u=x+d[i][0];
int v=y+d[i][1];
if(a[u][v] && p[u][v]==0){
q[++l][0]=u;
q[l][1]=v;
q[l][2]=q[f][2]+1;
p[u][v]=1;
if(a[u][v]==2){
cout<<u<<" "<<v<<" "<<q[l][2]+1;
return 0;
}
}
}
}
return 0;
}