C++修改文件后缀名;链表循环删除乘积为10的元素

1. 文件名修改

在一个文件目录下,存在相同扩展名 ".stp"的多个文件,对这样的文件名,请修改文件名称,在文件 名称后增加排序标识 "-01" "-02" "-03"...
#include <iostream>
#include <io.h>
#include <fstream>
#include <string>
#include <vector>
using namespace std;// Input: 目录名称
// Output:文件列表清单class Findupdate {
public:void replaceFileNameList();//遍历文件列表替换文件名bool checkFile(string path);//查找路径下所有文件,不存在子文件夹bool checkFile_circ(string path, vector<string>& m_vec_file_path_name);//查找路径下所有文件,存在子文件夹~Findupdate(){m_vec_file_path_name.clear();}vector<string> m_vec_file_path_name; //文件名路径列表
private:bool replaceFileName(string oldFileName, string newFileName);//替换文件名 string m_modif_before = ".stp";             //指定修改前的字段
};bool Findupdate::replaceFileName(string oldFileName, string newFileName)
{fstream fs;fs.open(oldFileName.c_str());if (fs.fail()){cout << "文件打开失败!" << endl;fs.close();return false;}else{fs.close();if (rename(oldFileName.c_str(), newFileName.c_str()) == -1)   //文件重命名{cout << "文件名修改失败!" << endl;return false;}return true;}return true;
}void Findupdate::replaceFileNameList()
{int num = 1;string ModifyAfterFilds = "";                  //指定修改后的字段for (auto name : m_vec_file_path_name){//临时文件名用于字符替换string newFileName = name;int findIndex = name.find(m_modif_before, 1);if (findIndex != -1 && findIndex == (name.size()-4)){ModifyAfterFilds = ".stp-0" + std::to_string(num); num++;newFileName = newFileName.replace(findIndex, m_modif_before.size(), ModifyAfterFilds);cout << name << endl;cout << newFileName << endl;}else{continue;}        int ret = replaceFileName(name, newFileName);}
}bool Findupdate::checkFile(string path)
{string EachPath = path;      //临时路径,用于字符拼接intptr_t FileHandle;             //文件句柄struct _finddata_t FileInfo;     //文件信息if ((FileHandle = _findfirst(EachPath.append("\\*").c_str(), &FileInfo)) == -1){cout << "未找到文件! " << endl;return false;}else{while (_findnext(FileHandle, &FileInfo) == 0){if (strcmp(FileInfo.name, ".") != 0 && strcmp(FileInfo.name, "..") != 0){m_vec_file_path_name.push_back(FileInfo.name);cout << "FileName : " << FileInfo.name << endl;}}_findclose(FileHandle);}return true;
}bool Findupdate::checkFile_circ(string path, vector<string>& m_vec_file_path_name)
{string EachPath = path;      //临时路径,用于字符拼接intptr_t FileHandle;             //文件句柄struct _finddata_t FileInfo;     //文件信息//使用_findfirst查找文件,获取文件信息if ((FileHandle = _findfirst(EachPath.append("\\*").c_str(), &FileInfo)) == -1){cout << "failed find file! " << endl;return false;}else{do{   // 比较文件类型是否是文件夹if ((FileInfo.attrib &  _A_SUBDIR)){if (strcmp(FileInfo.name, ".") != 0 && strcmp(FileInfo.name, "..") != 0){EachPath = path;   //每次从根路径拼接//递归调用checkFile_circ(EachPath.append("\\").append(FileInfo.name), m_vec_file_path_name);}}else{EachPath = path;m_vec_file_path_name.push_back(EachPath.append("\\").append(FileInfo.name));cout << "PATH/FileName : " << EachPath << endl;}} while (_findnext(FileHandle, &FileInfo) == 0);_findclose(FileHandle);}return true;
}int main()
{string Path = "E:\\xx\\xx";      //自定义路径Findupdate f_upate;//  f_upate.checkFile(Path); //路径下没有子文件夹f_upate.checkFile_circ(Path, f_upate.m_vec_file_path_name);f_upate.replaceFileNameList();system("pause");return 0;
}


 

2.链表删除

链表 head 反复 删去链表中由 总乘积 值为 10 的连续节点组成的序列, 直到不存在这样的序列为止,需 考虑各种特殊情况。
#include<iostream>
using namespace std;struct ListNode {  int val;  ListNode *next;  ListNode(int x) : val(x), next(NULL) {}  
};  class Solution
{
public:// 辅助函数:打印链表  void printList(ListNode* head) {  while (head) {  std::cout << head->val << " ";  head = head->next;  }  std::cout << std::endl;  }  // 辅助函数:创建链表  ListNode* createList(int arr[], int n) {  if (n == 0) return nullptr;  ListNode* head = new ListNode(arr[0]);  ListNode* curr = head;  for (int i = 1; i < n; ++i) {  curr->next = new ListNode(arr[i]);  curr = curr->next;  }  return head;  }  // 辅助函数:释放链表内存  void deleteList(ListNode* head) {  while (head) {  ListNode* temp = head;  head = head->next;  delete temp;  }  }  ListNode* removeSublists(ListNode* head){// 创建一个哑节点作为头节点的前驱  ListNode dummy(0);  dummy.next = head;  ListNode* prev = &dummy;  ListNode* curr = head;  while (curr && curr->next) {  // 检查当前节点和下一个节点的乘积是否为10  while (curr && curr->next && curr->val * curr->next->val == 10) {  // 删除这两个节点  prev->next = curr->next->next;  // 移动到下一个要检查的节点(注意这里不是curr = prev->next,因为prev->next可能已经被改变了)  curr = curr->next;}  curr = prev->next;  // 如果没有找到乘积为10的节点对,则移动到下一个要检查的节点对  if (curr) {  prev = curr;  curr = curr->next;  }  }  // 返回哑节点的下一个节点作为新的头节点  return dummy.next; }
};int main() {  int arr[] = {1, 2, 5, 2, 1, 2, 5}; // 示例链表:1 -> 2 -> 5 -> 2 -> 1 -> 2 -> 5  Solution sol_list;ListNode* head = sol_list.createList(arr, sizeof(arr) / sizeof(arr[0]));std::cout << "Original List: ";  sol_list.printList(head);head = sol_list.removeSublists(head);  std::cout << "List after removing product-ten nodes: ";  sol_list.printList(head);  sol_list.deleteList(head); // 释放链表内存  return 0;  
}

3. VS Code 配置 gitee

在VScode上配置Git - 知乎

Gitee 源码

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

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

相关文章

python基于百度,哈工大等停用表进行的中文分词

import os import pandas as pd import jieba# 加载停用词 def load_stopwords(filenames):stopwords set()for filename in filenames:with open(filename, r, encodingutf-8) as f:for line in f:stopwords.add(line.strip())return stopwords# 中文分词并去除停用词 def se…

企业网站有必要进行软件测试吗?网站测试有哪些测试流程?

企业网站在现代商业中扮演着重要的角色&#xff0c;它不仅是企业形象的重要体现&#xff0c;也是与客户、合作伙伴进行沟通与交流的重要渠道。然而&#xff0c;由于企业网站的复杂性和关键性&#xff0c;其中可能存在各种潜在的问题和隐患。因此&#xff0c;对企业网站进行软件…

企业如何安全的使用U盘

问题的背景&#xff1a; U盘&#xff08;USB闪存盘&#xff09;的优点主要包括&#xff1a; 便携性&#xff1a;U盘体积小、重量轻&#xff0c;便于携带&#xff0c;可以轻松地在不同设备间传输数据。高速传输&#xff1a;相比传统机械硬盘&#xff0c;U盘的读写速度更快&…

el-upload上传文件使用http-request方法,formdata传集合List到后台

el-upload上传文件 前言1、使用el-upload上传文件1.1代码演示1.2回显列表2、formdata传集合List到Springboot后台前言 在使用el-upload上传文件,会遇到必须使用:action="upload_url"远端链接的问题,本章我们讲解怎样不适用远端链接,通过上传获取到本地的file文件…

海尔智家牵手罗兰-加洛斯,看全球创牌再升级

晚春的巴黎西郊&#xff0c;古典建筑群与七叶树林荫交相掩映&#xff0c;坐落于此的罗兰加洛斯球场内座无虚席。 来自全球各地的数万观众&#xff0c;正与场外街道上的驻足者们一起&#xff0c;等待着全世界最美好的网球声响起…… 当地时间5月26日&#xff0c;全球四大职业网…

RFM模型-分析母婴类产品

1&#xff0c;场景描述 假设我们是某电商平台的数据分析师&#xff0c;负责分析母婴产品线的用户数据。母婴产品的购买行为具有一定的周期性和生命周期特征&#xff0c;如用户在不同怀孕阶段的需求不同&#xff0c;以及宝宝出生后的不同成长阶段需要不同的产品。 2&#xff0…

Flutter 中的 RichText 小部件:全面指南

Flutter 中的 RichText 小部件&#xff1a;全面指南 Flutter 是一个流行的跨平台 UI 工具包&#xff0c;它允许开发者使用 Dart 语言来构建高性能、高保真的移动应用。在 Flutter 中&#xff0c;RichText 是一个非常有用的小部件&#xff0c;它允许开发者在同一个文本行中混合…

XV7011BB可为智能割草机的导航系统提供新的解决方案

智能割草机作为现代家庭和商业草坪维护保养的重要工具&#xff0c;其精确的定位和导航系统对于提高机器工作效率和确保安全运行至关重要。在智能割草机的发展历程中&#xff0c;定位和导航技术一直是关键的创新点。 传统的基于RTK(实时动态差分定位技术)技术的割草机虽然在…

景源畅信电商:抖音开店步骤是什么?

随着社交媒体的兴起&#xff0c;抖音已经成为一个不可忽视的电商平台。许多人都希望通过抖音开店来实现自己的创业梦想。那么&#xff0c;抖音开店的具体步骤是什么呢?接下来&#xff0c;我们将详细阐述这一问题。 一、明确回答问题抖音开店的步骤主要包括&#xff1a;注册账号…

1初识C#

1、Console安慰 Console.WriteLine("Hello, world!"); // 输出 "Hello, world!" 并换行 Console.WriteLine(123.45); // 输出数字 123.45 并换行 Console.WriteLine("Name: " name); // 输出 "Name: [变量name的值]" 并换行 2、 C…

Vue 3 教程:核心知识

Vue 3 教程&#xff1a;核心知识 1. Vue3简介1.1. 【性能的提升】1.2.【 源码的升级】1.3. 【拥抱TypeScript】1.4. 【新的特性】 2. 创建Vue3工程2.1. 【基于 vue-cli 创建】2.2. 【基于 vite 创建】(推荐)2.3. 【一个简单的效果】 3. Vue3核心语法3.1. 【OptionsAPI 与 Compo…

贪心算法教程(个人总结版)

背景 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取在当前状态下最好或最优的选择&#xff0c;期望通过局部最优选择达到全局最优解决方案的算法。贪心算法的应用广泛&#xff0c;包括图算法、动态规划、贪心选择、装载问题等。它通常用于解决…

【C++】---二叉搜索树

【C】---二叉搜索树 一、二叉搜索树概念二、二叉搜索树操作&#xff08;非递归&#xff09;1.二叉搜索树的查找 &#xff08;非递归&#xff09;&#xff08;1&#xff09;查找&#xff08;2&#xff09;中序遍历 2.二叉搜索树的插入&#xff08;非递归&#xff09;3.二叉搜索树…

Java 实现二叉搜索树 代码

新建文件 创建TreeNode类&#xff0c;实例化 直接在BinarySearchTree类里面写就可以 static class TreeNode {public int key;public TreeNode left;public TreeNode right;TreeNode(int key) {this.key key;}}public TreeNode root; 插入节点 insert public boolean inser…

Spring创建对象的多种方式

一、对象分类 简单对象&#xff1a;使用new Obj()方式创建的对象 复杂对象&#xff1a;无法使用new Obj()方式创建的对象。例如&#xff1a; 1. AOP创建代理对象。ProxyFactoryBean; 2. Mybatis中的SqlSessionFactoryBean; 3. Hibernate中的SessionFactoryBean。二、创建对象方…

创新案例 | 持续增长,好孩子集团的全球化品牌矩阵战略与客户中心设计哲学

探索好孩子集团如何通过创新设计的全球化品牌矩阵和以客户为中心的产品策略&#xff0c;在竞争激烈的母婴市场中实现持续增长。深入了解其品牌价值观、市场定位策略以及如何满足新一代父母的需求。本文旨在为中高级职场人士、创业家及创新精英提供深度见解&#xff0c;帮助他们…

最新上市公司控制变量大全(1413+指标)1990-2023年

数据介绍&#xff1a;根据2023年上市公司年报数据进行更新&#xff0c;包括基本信息、财务指标、环境、社会与治理、数字化转型、企业发展、全要素生产率等1413指标。数据范围&#xff1a;A股上市公司数据年份&#xff1a;1990-2023年指标数目&#xff1a;1413个指标&#xff0…

在云中确保安全的五个技巧

随着采用云计算战略并开始充分意识到云计算技术可以提供的回报&#xff0c;企业可以做些什么来改善他们的风险状况?以下是德迅云安全在云中确保安全的五个技巧。 德迅云安全对如何在云计算基础设施中确保安全的五个技巧进行了阐述和分析。 在当今的混合工作环境中&#xff0c…

UG NX二次开发(C#)-UFun函数-利用UFPart.Export导出模型中的对象并创建一个新的part

文章目录 1、前言2、UF_PART_export函数定义3、UF_PART_export_with_options函数定义4、代码1、前言 在UG NX 10.0二次开发中,需要用到将装配体中通过几何建模创建的对象独立创建一个part文件,所以查找了下UFun函数,即是UF_PART_export 和UF_PART_export_with_options两个函…

在Windows 10中,如何利用命令提示符删除应用程序

如果你使用的是Windows 10&#xff0c;并且需要释放一些磁盘空间&#xff0c;你可以直接从命令提示符卸载不再使用的应用程序。以下是操作方法。 首先&#xff0c;你必须以管理员身份运行命令提示符才能卸载程序。在“Windows搜索”框中&#xff0c;键入“cmd”或“命令提示符…