《数据结构实验指导-C++语言版》 在顺序表 list 中查找元素 x
2026/8/20 11:52:05 网站建设 项目流程

题目描述

请编写程序,将nnn个整数存入顺序表,对任一给定整数xxx,查找其在顺序表中的位置。

输入格式:

输入首先在第一行给出正整数nnn≤104\le 10^4104);随后一行给出nnn个 int 范围内的不重复的整数,数字间以空格分隔;最后一行给出待查找的元素xxx,也是 int 范围内的整数。

输出格式:

在一行中输出xxx在顺序表中的位置,即数组下标。如果没找到,则输出 -1。注意数组下标从 0 开始。

输入样例:

5 1 2 3 4 5 4

输出样例:

3

输入样例:

5 4 3 6 8 0 1

输出样例:

-1

解题思路

顺序表在内存中是连续存储的,查找元素xxx最直接的方法是顺序查找(线性查找):从下标 0 开始逐个比较,找到第一个等于xxx的元素即返回其下标。

  • 由于题目保证数据不重复,第一个匹配到的位置就是唯一答案;用pos记录结果,默认 -1 表示未找到。
  • 时间复杂度:O(n)O(n)O(n),最坏情况需要比较全部元素。
  • 空间复杂度:O(n)O(n)O(n)(存储顺序表本身)。

代码流程说明

  1. 读入nnn,并将nnn个整数存入数组a
  2. 读入待查找元素xxx
  3. pos初始化为 -1。
  4. 从下标 0 到n−1n-1n1遍历数组,若a[i] == x,记录pos = i并跳出循环。
  5. 输出pos并换行。

代码实现

#include<iostream>usingnamespacestd;constintMAXN=10005;inta[MAXN];intmain(){intn,x;cin>>n;for(inti=0;i<n;++i)cin>>a[i];cin>>x;intpos=-1;for(inti=0;i<n;++i){if(a[i]==x){pos=i;break;}}cout<<pos<<endl;return0;}

代码流程图

开始

读入 n 和数组元素

读入待查找元素 x

pos 初始化为 -1

i 从 0 到 n-1

a i 是否等于 x

pos 等于 i 并跳出循环

输出 pos

i 加 1

结束

解题流程图

在顺序表中查找元素 x

读入 n 和表元素

读入待查找元素 x

从下标 0 开始逐个比较

是否找到等于 x 的元素

返回该元素下标

是否还有元素

返回 -1

输出结果

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询