【数据结构——查找】顺序查找(头歌实践教学平台习题)【合集】

目录😋

任务描述

相关知识

测试说明

我的通关代码:

测试结果:


任务描述

本关任务:实现顺序查找的算法。

相关知识

为了完成本关任务,你需要掌握: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不在表中

开始你的任务吧,祝你成功!


我的通关代码:

cpp 复制代码
#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;
}

测试结果:


相关推荐
一只旭宝14 小时前
【C++ 入门精讲2】函数重载、默认参数、函数指针、volatile | 手写笔记(附完整代码)
c++·笔记
nianniannnn14 小时前
力扣206.反转链表 92.反转链表II
算法·leetcode·链表
澈20714 小时前
哈希表实战:从原理到手写实现
算法·哈希算法
旖-旎14 小时前
哈希表(存在重复元素||)(4)
数据结构·c++·算法·leetcode·哈希算法·散列表
Run_Teenage14 小时前
Linux:认识信号,理解信号的产生和处理
linux·运维·算法
John.Lewis14 小时前
C++进阶(8)智能指针
开发语言·c++·笔记
被摘下的星星14 小时前
数据结构中逻辑结构和存储结构对应有哪些
数据结构
無限進步D15 小时前
蓝桥杯赛前刷题
c++·算法·蓝桥杯·竞赛
小贾要学习15 小时前
【Linux】应用层自定义协议与序列化
linux·服务器·c++·json
CoderCodingNo15 小时前
【GESP】C++二级真题 luogu-B4497, [GESP202603 二级] 数数
开发语言·c++·算法