有n个互不相同的整数,存储在数组中。在这n个整数中查找m个整数,如果存在,则打印出与之相邻的整数;否则就显示无此数。
输入格式:
共4行,第一行为一个整数n(0<n<=1000),第二行为用空格分隔的n个整数。第三行为一个整数 m(0<m<=100),代表查询次数。第四行为用空格分隔的m个整数。测试用例保证所有整数可以用int存储。
输出格式:
共m行,依次对应输入m次查询结果,每次的查询结果中可能有一个数、两个数或没有数。若没有数则输出“NULL”。具体见样例。
输入样例:
5
89 7890 22 56 87
6
89 7890 22 56 87 999
输出样例:
7890
89 22
7890 56
22 87
56
NULL
#include<stdio.h>
int main(){
int a[1000],n,m,x,f=0;
scanf("%d",&n);
if(n==1){
printf("NULL");
return 0;
}
for(int i=0;i<n;i++){
scanf("%d",&a[i]);
}
scanf("%d",&m);
for(int j=1;j<=m;j++){
scanf("%d",&x);
for(int i=0;i<n;i++){
if(x==a[i]){
f=1;
if(i==0){
printf("%d\n",a[1]);
}
else if(i==n-1){
printf("%d\n",a[n-2]);
}
else{
printf("%d %d\n",a[i-1],a[i+1]);
}
}
}
if(f==0){
printf("NULL\n");
}
f=0;
}
}
对于顺序表来说,容易忘记考虑首尾的特殊情况。
if(n==1){ printf("NULL"); return 0; }
——这段真的很难想到!!