目錄😋
任務描述
相關知識
測試說明
我的通關代碼:
測試結果:
任務描述
本關任務:實現順序查找的算法。
相關知識
為了完成本關任務,你需要掌握: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;
}