吉首大学--23级题目讲解

7-1 单链表基本操作

在 C/C++ 中,.(点)和 ->(箭头)运算符用于访问结构体或类的成员,但它们的使用场景不同。

1. . 运算符

  • . 运算符用于访问结构体或类的成员,通过对象或结构体变量直接访问。

2. -> 运算符

  • -> 运算符用于访问指向结构体或类的指针的成员。它简化了通过指针访问成员的过程。
示例:
struct Point {int x,y;
};Point p;         // 创建结构体变量 p
p.x = 10;       // 使用 . 访问成员 x
p.y = 20;       // 使用 . 访问成员 y
cout << "Point: (" << p.x << ", " << p.y << ")" << endl;  // 输出: Point: (10, 20)Point* p1 = (Point*)malloc(sizeof(Point)); // 创建一个指向 Point 的指针
//Point* pPtr = new Point;  C++可以这么写
p1->x = 10;             // 使用 -> 访问成员 x
p1->y = 20;             // 使用 -> 访问成员 y
cout << "Point: (" << p1->x << ", " << p1->y << ")" << endl;  // 输出: Point: (10, 20)
free(p1);				// 释放内存
//delete p1;            C++可以这么写

3. 区分 &*

  • & 运算符

    • 主要用于获取变量的地址(取地址运算符)。
    • 例如:int* p = &a; 表示将变量 a 的地址赋给指针 p
  • * 运算符

    • 主要用于指针的声明和解引用(取值运算符)。
    • 在声明中,int* p 表示 p 是一个指向 int 类型的指针。
    • 在解引用时,*p 表示访问指针 p 所指向的内存地址中的值。
示例:
int a = 10;
int* p = &a;  // & 用于获取 a 的地址
cout << *p;   // * 用于解引用,输出 10
#include<bits/stdc++.h>
using namespace std;// 定义节点结构体,包含一个整数和一个指向下一个节点的指针
struct node {int w;                 // 节点中存储的整数值struct node *next;     // 指向下一个节点的指针
};typedef struct node Node;  // 为结构体 node 定义别名 NodeNode* head;               // 链表的头节点指针
Node* back;               // 链表的尾节点指针,用于快速在链表尾部插入
int len = 0;              // 链表的长度,动态记录节点数量// 初始化链表,创建一个空的头节点
void ini() {head = (Node* )malloc(sizeof(Node));  // 分配内存给头节点back = head;                          // 初始化 back 指向头节点head->next = NULL;                    // 头节点的 next 设为 NULL,表明链表为空
}// 根据位置 k 查找第 k 个节点
Node* find(int k) {Node* temp = head;                    // 从头节点开始遍历for (int i = 1; i <= k; i++) {        // 移动到第 k 个节点temp = temp->next;}return temp;                          // 返回第 k 个节点的指针
}// 在节点 k 之后插入一个新节点,节点值为 x
void insert(Node* k, int x) {Node* temp = (Node* )malloc(sizeof(Node));  // 分配新节点的内存temp->w = x;                                // 将值 x 存入新节点temp->next = k->next;                       // 新节点的 next 指向 k 的下一个节点k->next = temp;                             // 将 k 的 next 指向新节点if (k == back) back = temp;                 // 如果插入的是最后一个节点,更新 back
}// 删除节点 k 的下一个节点
void deleteNode(Node* k) {Node* temp = k->next;                // 暂存要删除的节点k->next = k->next->next;             // 跳过被删除的节点,直接链接到下一个节点free(temp);                          // 释放被删除节点的内存
}int main() {int n;cin >> n;                            // 读取初始链表长度 nini();                               // 初始化链表for (int i = 1; i <= n; i++) {int x;cin >> x;                        // 读取每个节点的值insert(back, x);                 // 在链表尾部插入节点len++;                           // 更新链表长度}int m;cin >> m;                            // 读取操作次数 mwhile (m--) {int op;cin >> op;                       // 读取操作类型if (op == 0) {                   // 插入操作int k, d;cin >> k >> d;               // 读取插入位置 k 和插入的值 dif (k <= 0 || k > len) continue;  // 边界条件检查,跳过非法位置insert(find(k), d);          // 在第 k 个节点之后插入值为 d 的新节点len++;                       // 更新链表长度} else {                         // 删除操作int k;cin >> k;                    // 读取删除位置 kif (k <= 0 || k > len) continue;  // 边界条件检查,跳过非法位置deleteNode(find(k - 1));     // 删除第 k 个节点len--;                       // 更新链表长度}}// 打印并释放链表中所有节点的内存while (head->next != NULL) {cout << head->next->w << " ";    // 打印当前节点的值Node* temp = head->next;         // 暂存当前节点的指针head->next = head->next->next;   // 跳过当前节点,指向下一个节点free(temp);                      // 释放当前节点的内存}return 0;
}

单链表——单链表的定义及基本操作(初始化、头插法尾插法建表、查找、插入、删除、判空等)_带头结点的单链表的元素的创建、查找、插入、删除等基本操作-CSDN博客

7-2矩阵运算

#include<bits/stdc++.h>
using namespace std;
bool check(int i,int j,int n){if(i+j==n+1) return 0;//副对角线if(j==n||i==n) return 0;//最后一列 最后一行return 1;
}
int main(){int n,ans=0;cin>>n;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){int x;cin>>x;if(check(i,j,n)){ans+=x;}}}cout<<ans<<endl;return 0;
}

7-3 删除重复字符

注意!输入空格!!!

#include<bits/stdc++.h>
using namespace std;
int main(){vector<char> v;set<char> s;char c;while((c=getchar())!='\n'){if(!s.count(c)){//查看原集合中是否存在,即之前是否出现过s.insert(c);v.push_back(c);}}sort(v.begin(),v.end());//排序for(char i:v){cout<<i;}cout<<endl;return 0;
}

字符不会超过128(ASCII码),开桶

#include<bits/stdc++.h>
using namespace std;
int tong[200];
int main(){char c;memset(tong,0,sizeof(tong));while((c=getchar())!='\n'){tong[(int)c]++;}for(int i=0;i<128;i++){if(tong[i]){cout<<(char)(i);}}return 0;
}

C++常用STL

  1. vector 动态数组
  2. stack
  3. queue 队列
  4. deque 双端队列
  5. priority_queue 优先队列
  6. map 映射(键值对)
  7. set 集合

C++ STL详解超全总结(快速入门STL)-CSDN博客

7-4 统计字符出现次数

ASCII(American Standard Code for Information Interchange)码表是用于表示文本字符的标准编码系统。它为每个字符分配了一个唯一的整数值,以便计算机能够在不同设备之间交换文本数据。ASCII码表最初设计用于表示英文字符,但后来扩展了其他符号。

ASCII码表

一共有128个字符,开桶即可。

#include<bits/stdc++.h>
using namespace std;
int cnt[200];
int main(){char c;while((c=getchar())!='\n'){cnt[(int)c]++;}c=getchar();//小心空格,再次提醒cout<<cnt[(int)c]<<endl;return 0;
}

补录

    //getchar() 返回的是读取的字符的 ASCII 值while((c=getchar())!='\n'){cnt[(int)c]++;}//这样写是可以的while(scanf("%c", &c) && c != '\n') {cnt[(int)c]++;}//scanf("%c", &c) 返回的是读取成功的项数,而不是读取的字符值,因此直接将它与 '\n' 进行比较是错误的//故这样写是错误的ERROR//scanf和printf本身也是一个函数,可以自己去了解while(scanf("%c", &c) != '\n') {}
}

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

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

相关文章

es的封装

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、类和接口介绍0.封装思想1.es的操作分类 二、创建索引1.成员变量2.构造函数2.添加字段3.发送请求4.创建索引总体代码 三.插入数据四.删除数据五.查询数据 前…

Element Plus 中Input输入框

通过鼠标或键盘输入字符 input为受控组件&#xff0c;他总会显示Vue绑定值&#xff0c;正常情况下&#xff0c;input的输入事件会正常被响应&#xff0c;他的处理程序应该更新组件的绑定值&#xff08;或使用v-model&#xff09;。否则&#xff0c;输入框的值将不会改变 不支…

windows环境下配置MySQL主从启动失败 查看data文件夹中.err发现报错unknown variable ‘log‐bin=mysql‐bin‘

文章目录 问题解决方法 问题 今天在windows环境下配置MySQL主从同步&#xff0c;在修改my.ini文件后发现MySQL启动失败了 打开my.ini检查参数发现没有问题 [mysqld] #开启二进制日志&#xff0c;记录了所有更改数据库数据的SQL语句 log‐bin mysql‐bin #设置服务id&#x…

[数据集][目标检测]不同颜色的安全帽检测数据集VOC+YOLO格式7574张5类别

重要说明&#xff1a;数据集里面有2/3是增强数据集&#xff0c;请仔细查看图片预览&#xff0c;确认符合要求在下载&#xff0c;分辨率均为640x640 数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件…

Python 二级考试

易错点 电脑基础知识 定义学生关系模式如下&#xff1a;Student &#xff08;S#&#xff0c; Sn&#xff0c; Ssex&#xff0c;class&#xff0c;monitorS#&#xff09;&#xff08;其属性分别为学号、学生名、性别、班级和班长学号&#xff09; 在关系模式中&#xff0c;如果…

python-SZ斐波那契数列/更相减损数

一&#xff1a;SZ斐波那契数列题目描述 你应该很熟悉斐波那契数列&#xff0c;不是吗&#xff1f;现在小理不知在哪里搞了个山寨版斐波拉契数列&#xff0c;如下公式&#xff1a; F(n) { $\ \ \ \ \ \ \ \ \ \ \ \ $ a,( n1) $\ \ \ \ \ \ \ \ \ \ \ \ $ b,( n2) $\ \ \ \ \ \ …

【优选算法之双指针】No.2--- 经典双指针算法(下)

文章目录 前言一、双指针示例&#xff1a;1.1 ⽔果成篮1.2 和为s的两个数字1.3 三数之和1.4 四数之和 二、双指针总结&#xff1a; 前言 &#x1f467;个人主页&#xff1a;小沈YO. &#x1f61a;小编介绍&#xff1a;欢迎来到我的乱七八糟小星球&#x1f31d; &#x1f4cb;专…

安装黑群晖系统,并使用NAS公网助手访问教程(好文)

由于正版群晖系统的价格不菲&#xff0c;对于预算有限的用户来说&#xff0c;安装黑群晖系统成为了一个不错的选择&#xff08;如果您预算充足&#xff0c;建议选择白群晖&#xff09;。如您对宅系科技比较感兴趣&#xff0c;欢迎查看本文&#xff0c;将详细介绍如何安装黑群晖…

allWebPlugin中间件自定义alert、confirm及prompt使用

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品&#xff0c;致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器&#xff0c;实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

跨游戏引擎的H5渲染解决方案(腾讯)

本文是腾讯的一篇H5 跨引擎解决方案的精炼。 介绍 本文通过实现基于精简版的HTML5&#xff08;HyperText Mark Language 5&#xff09;来屏蔽不同引擎&#xff0c;平台底层的差异。 好处&#xff1a; 采用H5的开发方式&#xff0c;可以将开发和运营分离&#xff0c;运营部门自…

代码随想录Day 51|题目:99.岛屿数量、100.岛屿的最大面积

提示&#xff1a;DDU&#xff0c;供自己复习使用。欢迎大家前来讨论~ 文章目录 题目一&#xff1a;99. 岛屿数量思路深度优先搜索DFS广度优先搜索BFS 题目二&#xff1a;100. 岛屿的最大面积DFSBFS 总结 题目一&#xff1a;99. 岛屿数量 99. 岛屿数量 (kamacoder.com) 思路 …

Tomcat服务器—Windows下载配置详细教程

一、关于 1.1 简介 Tomcat是一个开源的Java Servlet容器和Web服务器&#xff0c;由Apache软件基金会维护。它实现了Java Servlet和JavaServer Pages (JSP) 规范&#xff0c;用于运行Java Web应用程序。Tomcat支持多种Java EE功能&#xff0c;并提供了高效的性能和可扩展性&am…

华为OD机试 - 分解正整数 - 数学推导(Python/JS/C/C++ 2024 D卷 100分)

华为OD机试 2024E卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试真题&#xff08;Python/JS/C/C&#xff09;》。 刷的越多&#xff0c;抽中的概率越大&#xff0c;私信哪吒&#xff0c;备注华为OD&#xff0c;加入华为OD刷题交流群&#xff0c;…

Redisson实现分布式锁(看门狗机制)

目录 可重入锁&#xff1a; 锁重试和看门狗机制&#xff1a; 主从一致性&#xff1a; 首先引入依赖&#xff0c;配置好信息 3.使用Redisson的分布式锁 可重入锁&#xff1a; 可重入锁实现是通过redsi中的hash实现的&#xff0c;key依旧是业务名称加id&#xff0c;然后第一个…

如何成立一家自己的等级保护测评机构?需要哪些条件?有哪些要求?

给大家的福利&#xff0c;点击下方蓝色字 即可免费领取↓↓↓ &#x1f91f; 基于入门网络安全/黑客打造的&#xff1a;&#x1f449;黑客&网络安全入门&进阶学习资源包 前言 各省、自治区、直辖市公安厅、局网络安全保卫总队&#xff0c;新疆生产建设兵团公安局网络安…

【高分系列卫星简介——高分一号(GF-1)】

高分一号卫星&#xff08;GF-1&#xff09; 高分一号&#xff08;GF-1&#xff09;是中国高分辨率对地观测系统&#xff08;简称“高分专项”&#xff09;的第一颗卫星&#xff0c;具有里程碑式的意义。以下是对高分一号卫星的详细介绍&#xff1a; 一、基本信息 发射时间&…

2024华为杯研究生数学建模竞赛(研赛)选题建议+初步分析

提示&#xff1a;C君认为的难度&#xff1a;DE<C<F&#xff0c;开放度&#xff1a;CDE>F。 华为专项的题目&#xff08;A、B题&#xff09;暂不进行选题分析&#xff0c;不太建议大多数同学选择&#xff0c;对自己专业技能有很大自信的可以选择华为专项的题目。后续会…

MyBatis-config.xml核心配置

MyBatis-config.xml 包含了会深深影响MyBatis行为的设置和属性信息&#xff0c;配置文档的顶层结构如下 environments&#xff08;环境配置&#xff09; environments用于配置数据库的URL信息&#xff0c;MyBatis-config可以动态配置多个数据源&#xff0c;用于连生产、预发、…

用 HTML + JavaScript DIY 一个渐进式延迟法定退休年龄测算器

为减轻社会和个人因退休年龄变化带来的冲击&#xff0c;近日&#xff0c;全国人民代表大会常务委员会正式发布了关于实施渐进式延迟法定退休年龄的重要决定。 根据该决定&#xff0c;我国将同步启动对男、女职工法定退休年龄的延迟计划。这一调整将采取渐进式的方式进行&#…

RabbitMQ 高级特性——发送方确认

文章目录 前言发送方确认confirm 确认模式return 退回模式 常见面试题 前言 前面我们学习了 RabbitMQ 中交换机、队列和消息的持久化&#xff0c;这样能够保证存储在 RabbitMQ Broker 中的交换机和队列中的消息实现持久化&#xff0c;就算 RabbitMQ 服务发生了重启或者是宕机&…