【数据结构——查找】顺序查找(头歌实践教学平台习题)【合集】
目录😋
任务描述
本关任务:实现顺序查找的算法。
相关知识
为了完成本关任务,你需要掌握:1.根据输入数据建立顺序表,2.顺序表的输出,3.顺序查找算法。
提示:
顺序查找算法中要依次输出与k所比较的关键字,用空格分隔开。假设顺序表中R的关键字依次是3,6,2,10,1,8,5,7,4,9,
若查找的关键字k=5,则SeqSearch函数输出是3,6,2,10,1,8,5,并返回值7。
若查找的关键字为k=15,则函数输出是3,6,2,10,1,8,5,7,4,9,并返回值0。
测试说明
平台会对你编写的代码进行测试:
程序输入示例:
3 6 2 10 1
2
(说明:第一行是输入的一组原始关键字数据,第二行是要查找的关键字)
程序输出示例1:
请输入一组数据 :
关键字序列:3 6 2 10 1
请输入要查找的关键字 :2
查找5所比较的关键字: 3 6 2
元素5的位置是3
程序输出示例2:
请输入一组数据 :
关键字序列:3 6 2 10 1
请输入要查找的关键字 :8
查找15所比较的关键字: 3 6 2 10 1
元素15不在表中
开始你的任务吧,祝你成功!
我的通关代码:
#include <iostream>
#include <vector>
using namespace std;
// 定义查找元素的结构体类型,包含关键字和其他数据(这里暂未详细使用其他数据部分)
struct RecType {
int key;
// 可以按需添加其他数据成员及对应操作,此处简化只关注关键字key
};
// 创建顺序表,将输入的关键字数据存入顺序表中
void CreateList(vector<RecType> &R, const vector<int> &keys) {
for (size_t i = 0; i < keys.size(); ++i) {
RecType temp;
temp.key = keys[i];
R.push_back(temp);
}
}
// 输出顺序表的函数,遍历顺序表并输出每个元素的关键字
void DispList(const vector<RecType> &R) {
for (size_t i = 0; i < R.size(); ++i) {
cout << R[i].key << " ";
}
cout << endl;
}
// 顺序查找算法,按照要求输出比较的关键字,并返回查找结果
int SeqSearch(const vector<RecType> &R, int k) {
for (size_t i = 0; i < R.size(); ++i) {
cout << R[i].key << " ";
if (R[i].key == k) {
return i + 1; // 返回位置,这里的位置是从1开始计数,所以下标加1
}
}
return 0; // 如果没找到,返回0表示元素不在表中
}
int main() {
vector<RecType> R;
vector<int> keys;
cout << "请输入一组数据 :" << endl;
int num;
while (cin >> num) {
keys.push_back(num);
if (cin.get() == '\n') {
break;
}
}
CreateList(R, keys);
cout << "关键字序列:";
DispList(R);
int k;
cin >> k;
cout << "请输入要查找的关键字 :" << k << endl;
cout << "查找" << k << "所比较的关键字: ";
int result = SeqSearch(R, k);
if (result != 0) {
cout << endl << "元素" << k << "的位置是" << result << endl;
} else {
cout << endl << "元素" << k << "不在表中" << endl;
}
return 0;
}
测试结果:
原文地址:https://blog.csdn.net/lowkeyyh/article/details/144404664
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!