建立一个顺序表,查找表中第1个与指定元素相等的元素。若存在,则返回该元素在表中的位置(下标);否则返回-1。

建立一个顺序表,查找表中第1个与指定元素相等的元素。若存在,则返回该元素在表中的位置(下标);否则返回-1。

望采纳

#include <iostream>
using namespace std;

const int MAX_SIZE = 100; // 定义顺序表的最大长度

class SeqList {
private:
    int data[MAX_SIZE]; // 存储元素的数组
    int length; // 当前存储的元素个数
public:
    SeqList() { // 构造函数初始化为空表
        length = 0;
    }
    bool insert(int pos, int elem) { // 在pos位置插入元素elem
        if (pos < 1 || pos > length + 1 || length == MAX_SIZE) { // 判断是否越界或表满
            return false;
        }
        for (int i = length; i >= pos; i--) { // 将pos及其后面的元素向后移动一位
            data[i] = data[i - 1];
        }
        data[pos - 1] = elem; // 在pos位置插入元素elem
        length++; // 表长加1
        return true;
    }
    int search(int elem) { // 查找表中第1个与指定元素相等的元素
        for (int i = 0; i < length; i++) { // 从头到尾遍历表中元素
            if (data[i] == elem) { // 如果找到了与指定元素相等的元素,返回其下标
                return i;
            }
        }
        return -1; // 表示未找到
    }
};

int main() {
    SeqList list;
    int n, elem;
    cout << "请输入顺序表长度:";
    cin >> n;
    cout << "请输入顺序表元素:";
    for (int i = 1; i <= n; i++) {
        cin >> elem;
        list.insert(i, elem);
    }
    cout << "请输入要查找的元素:";
    cin >> elem;
    int pos = list.search(elem);
    if (pos == -1) {
        cout << "未找到该元素。" << endl;
    } else {
        cout << "该元素在表中的位置是:" << pos + 1 << endl;
    }
    return 0;
}

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
下面是一个简单的 C++ 代码示例,用于在顺序表中查找第一个与指定元素相等的元素,并返回该元素在表中的位置(下标),如果不存在,则返回 -1。

#include <iostream>
#include <vector>
using namespace std;

int search(vector<int>& v, int target) {
    int n = v.size();
    for (int i = 0; i < n; i++) {
        if (v[i] == target) {
            return i;  // 返回元素在表中的位置(下标)
        }
    }
    return -1;  // 元素不存在,则返回 -1
}

int main() {
    vector<int> v{1, 2, 3, 4, 5};  // 定义一个顺序表
    int target = 3;                // 指定要查找的元素
    int pos = search(v, target);   // 在表中查找指定元素
    if (pos != -1) {
        cout << "元素 " << target << " 在表中的位置是 " << pos << endl;
    } else {
        cout << "元素 " << target << " 不存在于表中" << endl;
    }
    return 0;
}

在这个示例中,我们首先定义了一个名为 v 的顺序表,然后指定要查找的元素 target。我们调用 search 函数来查找该元素,如果该元素存在于顺序表中,则返回该元素在表中的位置(下标),否则返回 -1。

search 函数中,我们使用一个循环来遍历顺序表中的每个元素,如果该元素与指定元素相等,则返回该元素在表中的位置(下标),否则继续遍历。如果遍历完整个表仍然没有找到与指定元素相等的元素,则返回 -1。

希望这个示例能够帮助你完成这个任务。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7742522
  • 这篇博客也不错, 你可以看下编写一个函数,在一个数组中查找定值,如果查找成功,则返回元素的下标否则返回-1
  • 除此之外, 这篇博客: 顺序表的建立、插入、删除、查找中的 实验1.2顺序表元素的插入 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 1.先建立一个顺序表L={12,13,21,24,28,30,42,77},然后在第i个位置插入一个数据元素25,并返回是否插入成功标志。如果插入成功,顺序表表长增加1

    2.实验要点及说明
    注意如何取到第i个元素的地址q,以及如何将原第i至第n个元素(这其中一共有n-i+1个元素)依次后移。顺序表插入前、后的状态图如图所示。

    3.参考代码

    #include "SeqList.h"                         //源代码请看实验1.1顺序表的建立
    
    
    int ListInsert_Seq(SeqList *L,int i,int e)           ////在第 i 个元素之前插入元素至顺序表
    {
    	int *p,*q,*newbase;
    
    	if((i<1)||(i>L->length+1))
    		return ERROR;
    	if(L->length>=L->listsize)                       // 当前空间已满,增加分配
    	{
    		newbase = (int *)realloc(L->elem,(L->length+LISTINCREMENT)*sizeof(int));
    		if(!newbase)
    			exit(OVERFLOW);
    		L->elem = newbase;
    		L->listsize += LISTINCREMENT;
    	}
    	q = &L->elem[i-1];	                     //  q 指向插入位置
    	for(p=&L->elem[L->length-1];p>=q;--p)    // 第 n 至第 i 个元素依次后移一个位置
    		*(p+1) = *p;
    	*q = e;					                 // 插入新元素 e
    	L->length++;                  /////// 注意!要传值回去,形参L 必须用指针变量
        return OK;
    }
    
    int main()
    {
        SeqList L;
        initList_Seq(&L);
        int i,n,e;
        printf("\nInput the length of the list L: ");
        scanf("%d",&n);
        L.length = n;
        printf("L.length = %d,n=%d\n",L.length,n);
        CreateList_Seq(L);
        printf("Input the insert location: ");
        scanf("%d",&i);
        printf("input 要插入 e 的值:");
        scanf("%d",&e);
        if(ListInert_Seq(&L,i,e))
        {
            printf("Output the datas: ");
            Output_SeqList(L);
        }else
            printf("Can't insert the data!\n");
    }
    
  • 您还可以看一下 张传波老师的全能项目经理训练营课程中的 认清形势,顺势而为(战略篇1)小节, 巩固相关知识点