zhuaizhai 2024-03-06 11:12 采纳率: 90.5%
浏览 3
已结题

用C++按要求实现查找功能

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:
查找失败!

  • 写回答

5条回答 默认 最新

  • 檀越@新空间 2024-03-06 11:13
    关注

    zhuaizhai 上午好☀️☀️☀️️
    本答案参考ChatGPT-3.5

    解决方案:

    1. 首先,我们需要定义一个顺序表结构SqList,该结构包含一个容器数组data和一个记录当前元素个数的变量length。
    2. 编写一个用于比较两个数据元素是否相等的函数equals(),该函数接受两个参数,分别为两个ElemType类型的数据元素e1和e2,并返回一个bool值,表示两个元素是否相等。
    3. 实现LocateElem()函数,该函数用于查找第一个与给定元素e相等的元素在顺序表中的逻辑序号。
      • 首先,创建一个循环遍历顺序表中的元素,在每次遍历时,使用equals()函数比较当前元素与给定元素e是否相等。
      • 如果相等,则返回当前元素的逻辑序号。
      • 如果遍历结束后仍未找到相等元素,则返回0表示查找失败。
    4. 在主函数中,读取顺序表的初始个数和元素值,然后读取要查找的元素。
    5. 调用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:

    查找失败!
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 3月14日
  • 已采纳回答 3月6日
  • 创建了问题 3月6日