考研生活day1--王道课后习题2.2.1、2.2.2、2.2.3

2.2.1

题目描述:

解题思路:

·这是最基础的操作,思路大家应该都有,缺少的应该是如何下笔,很多同学都是有思路但是不知道如何下笔,这时候看思路的意义不大,可以直接看答案怎么写,最好可以直接背下来,等熟悉了代码操作再进行书写也不迟

·言归正传,我们只需要写一个循环找到其中最小元素,以及最小元素所在下标,再用末尾元素对其覆盖即可,最后不要忘记了要对表的长度减一

*基础比较好的同学可以直接看外部的Del_Min函数,而基础一般的同学也可以看我在注释中写的Del_Min函数,注释中是我根据王道书中的答案根据C++语法进行修改的(因为C语言太过严谨且繁琐了)

代码如下

#include <iostream>
#include <vector>using namespace std;void PrintArray(vector<int> v) {for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {cout << *it << '\t';}cout << endl;
}
/*
void Del_Min(SQList& L, Element e) {if (L.length() == 0) {//如果表空则输出errorcout << "error!" << endl;return;//函数结束}int minn = INT_MAX;//INT_MAX为C++中用法定义minn为int类型所能表达的最大整数int pos = 0;//定义一个中间变量用于存放最小数据所在的位置for (int i = 0; i < L.length(); i++) {if (L[i] < minn) {minn = L[i];pos = i;}}L[pos] = L[length() - 1];//将最后的数字放在最小的数字的位置上L.length--;//千万不要忘记长度减一,这是很容易遗忘的一点
}
*/
void Del_Min(vector<int>& v, int& min_value) {if (v.empty()) {//判断表空cout << "顺序表为空" << endl;return;}min_value = v[0];int min_pos = 0;//定义中间变量确定最小数据所在位置for (int i = 1; i < v.size(); i++) {if (v[i] < min_value) {min_value = v[i];min_pos = i;}}v[min_pos] = v[v.size() - 1]; //将最后一个元素填补至最小元素位置v.pop_back();//取出数组末尾最后的一个元素,在这里等价于长度减一也就是L.length-1
}int main()
{vector<int> v = { 6,3,4,5,8,9 };int min_value;PrintArray(v);Del_Min(v, min_value);cout << "数组最小值为:" << min_value << endl;PrintArray(v);
}

运行结果


2.2.2

题目描述

解题思路:

·最基本的思路就是找一个临时变量,将前半部分的变量存入临时变量,再将后半部分变量存入前半部分变量,最后将临时变量中存入后半部分变量中,这样就完成了数据交换,这样说可能有点懵逼,用代码表示就是

temp = L.data[i];
L.data[i] = L.data[length-i-1];
L.data[Length-i-1] = temp;

这个思路一定要会,因为以后一定还会遇到

·在这里我提供一个更好的思路,可以直接调用swap()函数,这样就轻松实现数据交换了

*注释中的为书上答案修改后答案,基本思想未变,可运行代码为我取巧的方法

代码如下:

#include <iostream>
#include <vector>
#include <ctime>using namespace std;void Reverse(vector<int> &v) {int l = 0, r = v.size() - 1;while (l <= r) {swap(v[l], v[r]);//交换v[l],v[r]数据l++, r--;}
}/*
void Reverse(vector<int>& v) {for (int i = 0; i < v.size() / 2; i++) {int temp = v[i];v[i] = v[v.size() - 1 - i];v[v.size() - 1 - i] = temp;}
}
*/void GenerateData(vector<int>& v, int n) {srand(time(NULL));for (int i = 0; i < n; i++) {v.push_back(rand() % 100 + 1);}
}void PrintArray(vector<int> v) {for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {cout << *it << '\t';}cout << endl;
}int main() {vector<int> v;GenerateData(v,10);PrintArray(v);Reverse(v);PrintArray(v);}

运行结果


2.2.3

题目描述

解题思路

·一开的思路是遍历整个表,如果值相等,那么就将元素删除,再将表前移,但是这样会复杂一些,使用课后答案的思路会更简单,如果遍历到的值不相等,那就继续遍历,相等的值会被自动覆盖掉,就会简单且易懂一些

代码如下:

#include <iostream>
#include <vector>
#include <ctime>using namespace std;void Del_x(vector<int>& v, int x) {int k = 0;for (int i = 0; i < v.size(); i++) {if (v[i] != x) {//如果当前的值不等于x,就把他赋值到k位置,然后k++,也就是k的位置后移v[k++] = v[i];}}v.erase(v.begin() + k, v.end());//删除k后所有元素
}void GenerateData(vector<int>& v, int n) {srand(time(NULL));for (int i = 0; i < n; i++) {v.push_back(rand() % 100 + 1);}
}void PrintArray(vector<int> v) {for (vector<int>::iterator it = v.begin(); it != v.end(); it++) {cout << *it << '\t';}cout << endl;
}int main() {vector<int> v;GenerateData(v,10);PrintArray(v);Del_x(v,2);PrintArray(v);}

运行结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/40372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java项目:基于SSM框架实现的游戏攻略网站系统分前后台【ssm+B/S架构+源码+数据库+毕业论文+任务书】

一、项目简介 本项目是一套基于SSM框架实现的游戏攻略网站系统 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单、功能…

redhat7.x 升级openssh至openssh-9.8p1

1.环境准备&#xff1a; OS系统&#xff1a;redhat 7.4 2.备份配置文件&#xff1a; cp -rf /etc/ssh /etc/ssh.bak cp -rf /usr/bin/openssl /usr/bin/openssl.bak cp -rf /etc/pam.d /etc/pam.d.bak cp -rf /usr/lib/systemd/system /usr/lib/systemd/system.bak 3.安装…

UB9A0全系统全频高精度板卡性能指标

UB9A0 板卡是基于和芯星通自主研发的新一代射频基带及高精度算法一体化 GNSS SoC 芯片—Nebulas Ⅳ开发的全系统全频点高精 OEM 板卡 &#xff0c;支持 BDS&#xff0c;GPS&#xff0c; GLONASS&#xff0c;Galileo&#xff0c;QZSS&#xff0c;NavIC&#xff0c;SBAS&#xff…

MySQL环境搭配

下载版本37滴 下载第二个 之后进行安装 进入安装界面 next 选择默认的 进行下一步 安装成功后&#xff0c;进行一系列配置&#xff0c;成功界面如下&#xff1a; 配置 MySQL8.0 环境变量 如果不配置 MySQL 环境变量&#xff0c;就不能在命令行直接输入 MySQL 登录命令。 步…

强烈推荐!12 组超惊艳的 Midjourney 风格提示词!

前言 Midjourney 的 --sref random 随机风格功能推出之后&#xff0c;出现了很多对不同代码生成效果的探索。今天就为大家推荐 12 组我觉得非常惊艳的风格代码&#xff0c;将它们添加在提示词中&#xff0c;不需要写复杂的关键词就能得到高质量的指定风格&#xff0c;并且效果…

CUDA编译配置中来自 CUDA 12.1.targets 的MSB3721错误和核函数调用语法错误‘<’解决及可用的代码示例框架

今天开始整cuda编程处理图像&#xff0c;好久没玩cuda&#xff0c;又从小白开始。情况不妙&#xff0c;第一个工程坑不少&#xff0c;记录一下如下2个重要的错误&#xff1a; &#xff08;1&#xff09;来自 CUDA 12.1.targets 的MSB3721错误 错误 命令““C:\Program Files\N…

Scrapy框架的基本使用教程

1、创建scrapy项目 首先在自己的跟目录文件下执行命令&#xff1a; PS D:\BCprogram\python_pro\bigdata> scrapy startproject theridion_grallatorscrapy startproject 项目名 具体执行操作如下&#xff1a;1、创建项目目录&#xff1a;Scrapy会在当前工作目录下创建一…

Git 操作总结

1. 安装、Git 环境配置 1.1 安装 Git 官方版本可以在 Git 官方网站下载&#xff1a;打开 https://git-scm.com/download/win&#xff0c;选择相应版本即可。 Git 安装完成后&#xff0c;可以在开始菜单中看到 Git 的三个启动图标&#xff08;Git Bash、Git CMD、Git GUI&…

QT5.12环境搭建与源码编译

一、概述 QT版本&#xff1a;QT5.12.10 Qt网址&#xff1a;http://download.qt.io/archive/qt/ 编译平台 ubuntu18.04 二、安装交叉编译工具链 1、获取交叉编译工具链 一般如果是编译系统如果有对应的gcc 就是用这个就可以了 比如rk3128 lin…

字符串相似度算法完全指南:编辑、令牌与序列三类算法的全面解析与深入分析

在自然语言处理领域&#xff0c;人们经常需要比较字符串&#xff0c;这些字符串可能是单词、句子、段落甚至是整个文档。如何快速判断两个单词或句子是否相似&#xff0c;或者相似度是好还是差。这类似于我们使用手机打错一个词&#xff0c;但手机会建议正确的词来修正它&#…

如何为老化的汽车铅酸电池充电

一项小研究表明&#xff0c;汽车铅酸电池不同于深循环或固定电池。汽车电池旨在限度地提高启动电流容量&#xff0c;并且对深度放电或浮充(也称为第 3 阶段充电循环)反应不佳。起动电池的极板结构使表面积化&#xff0c;并且电解液比重 (SG) 高于其他电池&#xff0c;以提供高启…

C# 实现位比较操作

1、目标 对两个字节进行比较&#xff0c;统计变化位数、一位发生变化的位数、二位发生变化的位数、多位发生变化的位数。 2、代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Lin…

O2OA(翱途) 开发平台之HTTP端口规划

O2OA(翱途) 开发平台[下称O2OA开发平台或者O2OA]采用相对灵活的系统架构&#xff0c;支持三种服务器运行的方式。本篇主要阐述合并服务运行独立服务运行代理端口运行三种服务器运行方式。 一、先决条件&#xff1a; 1、O2Server服务器正常运行&#xff0c;系统安装部署请参考文…

Vue84-Vuex的工作原理与搭建开发环境

一、vuex工作原理 stats&#xff1a;是一个object对象&#xff0c;里面有很多key-value&#xff0c;存放的就是要操作的数据。mutations&#xff1a;是一个object对象&#xff0c;真正去操作stats的人。actions的作用&#xff1a;是一个object对象&#xff0c;当一个动作对应的…

【Spring Boot】关系映射开发(一):一对一映射

关系映射开发&#xff08;一&#xff09;&#xff1a;一对一映射 1.认识实体间关系映射1.1 映射方向1.2 ORM 映射类型 2.实现 “一对一” 映射2.1 编写实体2.1.1 新建 Student 实体2.1.2 新建 Card 实体 2.2 编写 Repository 层2.2.1 编写 Student 实体的 Repository2.2.2 编写…

从涟漪到波浪:资产代币化的变革力量

原文标题&#xff1a;《From ripples to waves: The transformational power of tokenizing assets》撰文&#xff1a;Anutosh Banerjee&#xff0c;Matt Higginson&#xff0c;Julian Sevillano&#xff0c;Matt Higginson编译&#xff1a;Chris&#xff0c;Techub News本文来…

还是NC,项目代码开源|scRNA+bulkRNA+因子分析验证地塞米松治疗Covid19

说在前面 平时发文章的话&#xff0c;做药物用的大多都是仅仅是GEO的bulkRNA&#xff0c;有人的有鼠的&#xff0c;然后做做流水线分析&#xff0c;最后面PCR。今天看一篇发NC的工作量&#xff0c;怎么用转录组分析做药物的转化免疫学 这篇文章作者已经上传Github了&#xff…

LabVIEW自动探头外观检测

开发了一套基于LabVIEW的软件系统&#xff0c;结合视觉检测技术&#xff0c;实现探头及连接器外观的自动检测。通过使用高分辨率工业相机、光源和机械手臂&#xff0c;系统能够自动定位并检测探头表面的细微缺陷&#xff0c;如划痕、残胶、异色、杂物等。系统支持多种探头形态&…

【C++ OpenCV】机器视觉-二值图像和灰度图像的膨胀、腐蚀、开运算、闭运算

原图 结果图 //包含头文件 #include <opencv2/opencv.hpp>//命名空间 using namespace cv; using namespace std;//全局函数声明部分//我的腐蚀运算 Mat Erode(Mat src, Mat Mask, uint32_t x0, uint32_t y0) {uint32_t x 0, y 0;Mat dst(src.rows, src.cols, CV_8U…

如何在忘记密码的情况下重置Realme手机?

欢迎阅读我们关于如何在有或没有密码的情况下重置Realme手机的综合指南。无论您是忘记了密码&#xff0c;还是只是需要将设备恢复到出厂设置&#xff0c;我们都会为您提供所需的专业提示和技术专长。 发现分步说明、专家提示和行之有效的方法&#xff0c;轻松重新控制您的 Rea…