DS静态查找之顺序查找
题目描述
给出一个队列和要查找的数值,找出数值在队列中的位置,队列位置从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 SSTable
{
int len;
int *elem;
public:
SSTable(int n);
~SSTable();
void InitSSTable();
int Search(int key);
};
SSTable::SSTable(int n) {
len=n;
elem=new int[n+1];
}
SSTable::~SSTable() {
delete []elem;
}
void SSTable::InitSSTable() {
for(int i=1;i<=len;i++)
cin>>elem[i];
}
int SSTable::Search(int key) {
elem[0]=key;
for(int i=len;i>=0;i--)
if(elem[i]==key)
return i;
}
int main() {
int n;
cin>>n;
SSTable myTable(n);
myTable.InitSSTable();
int t;
cin>>t;
while (t--)
{
int key;
cin>>key;
int res=myTable.Search(key);
if(res!=0)
cout<<res<<endl;
else
cout<<"error"<<endl;
}
return 0;
}
这篇博客介绍了数据结构中的静态查找技术,特别是带哨兵的顺序查找算法。文章通过一个具体的例子展示如何在一个队列中查找特定数值,队列元素从1开始编号。算法要求在给定的n个正整数中查找目标数值,并返回其位置,若未找到则输出'error'。样例输入和输出展示了算法的运行情况。
1153

被折叠的 条评论
为什么被折叠?



