题目描述
给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从1开始
要求使用带哨兵的顺序查找算法
输入
第一行输入n,表示队列有n个数据
第二行输入n个数据,都是正整数,用空格隔开
第三行输入t,表示有t个要查找的数值
第四行起,输入t个数值,输入t行
输出
每行输出一个要查找的数值在队列的位置,如果查找不成功,输出字符串error
样例输入
8
33 66 22 88 11 27 44 55
3
22
11
99
样例输出
3
5
error
代码实例
#include<iostream>
using namespace std;
class SeqSearch
{
private:
int length; //顺序表长度
int *elem; //顺序表
public:
SeqSearch(){}
SeqSearch(int n) //初始化顺序表
{
length = n;
elem = new int[length];
for(int i=0;i<length;i++)
cin >> elem[i];
}
~SeqSearch(){}
int Index_search(int n,int key)
{
elem[0] = key;
for(int i=n;i>0;i--)
if(elem[i] == key)
return i+1;
return -1;
}
};
int main()
{
int n,t,a;
cin >> n;
SeqSearch l(n);
cin >> t;
while(t--)
{
cin >> a;
if(l.Index_search(n,a) == -1)
cout << "error" << endl;
else
cout << l.Index_search(n,a) << endl;
a = 0;
}
return 0;
}