C++实现顺序表的查找 操作:编写顺序表按值查找序号操作的函数。在顺序表L找第一个值为e的元素,找到后返回其逻辑序号,否则返回0。注意:由于线性表的逻辑序号从1开始,这里用0表示没有找到值为e的元素。在算法实现时,应根据顺序表数据元素的类型ElemType编写判断两个数据元素是否相等的比较函数equals()。编程要求
//返回顺序表L中第1个与e满足相等关系equal0的数据元素的位序,若这样的数据元素不存在,则返回值为0。 int LocateElem(SqList LElemType e);
输入说明:输入顺序表的初始个数和各个元素的值,再输入要查找的数据元素的值。
输出说明:如果查找成功,第二行输出查找元素的逻辑序号;如果查找失败,则输出“查找失败!”。
输入样例1:
10
12 47 5 8 6 92 45 63 75 38
92
输出样例1:
92是顺序表第6个元素
输入样例2:
10
12 47 5 8 6 92 45 63 75 38
93
输出样例2:
查找失败!
用C++按要求实现查找功能
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
5条回答 默认 最新
檀越@新空间 2024-03-06 11:13关注zhuaizhai 上午好☀️☀️☀️️
本答案参考ChatGPT-3.5解决方案:
- 首先,我们需要定义一个顺序表结构SqList,该结构包含一个容器数组data和一个记录当前元素个数的变量length。
- 编写一个用于比较两个数据元素是否相等的函数equals(),该函数接受两个参数,分别为两个ElemType类型的数据元素e1和e2,并返回一个bool值,表示两个元素是否相等。
- 实现LocateElem()函数,该函数用于查找第一个与给定元素e相等的元素在顺序表中的逻辑序号。
- 首先,创建一个循环遍历顺序表中的元素,在每次遍历时,使用equals()函数比较当前元素与给定元素e是否相等。
- 如果相等,则返回当前元素的逻辑序号。
- 如果遍历结束后仍未找到相等元素,则返回0表示查找失败。
- 在主函数中,读取顺序表的初始个数和元素值,然后读取要查找的元素。
- 调用LocateElem()函数查找目标元素的逻辑序号,并根据返回的结果进行输出。如果返回值为0,则输出"查找失败!";否则,输出查找元素的逻辑序号。
修改后的C++代码如下:
#include <iostream> using namespace std; typedef int ElemType; struct SqList { ElemType data[100]; int length; }; bool equals(ElemType e1, ElemType e2) { return e1 == e2; } int LocateElem(SqList L, ElemType e) { for (int i = 0; i < L.length; i++) { if (equals(L.data[i], e)) { return i + 1; } } return 0; } int main() { SqList L; int n, e; cin >> n; for (int i = 0; i < n; i++) { cin >> L.data[i]; } L.length = n; cin >> e; int index = LocateElem(L, e); if (index == 0) { cout << "查找失败!" << endl; } else { cout << e << "是顺序表第" << index << "个元素" << endl; } return 0; }输入样例1:
10 12 47 5 8 6 92 45 63 75 38 92输出样例1:
92是顺序表第6个元素输入样例2:
10 12 47 5 8 6 92 45 63 75 38 93输出样例2:
查找失败!本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报