数据结构实践教程-绪论
数据结构习题整理 一、单项选择题 数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的()和运算的科学。 A. 约束 B. 算法 C. 关系 D. 操作 答案:C 数据结构研究的内容不包括()。 A. 逻辑结构 B. 存储结构 C. 操作和运算 D. 有穷性和健壮性 答案:D 错题分析:有穷性、健壮性是算法的特性,并非数据结构的研究内容。 以下属于逻辑结构的是()。 A. 顺序表 B. 哈希表 C. 有序表 D. 单链表 答案:C 以下与数据的存储结构无关的术语是()。 A. 循环队列 B. 链表 C. 哈希表 D. 栈 答案:D 错题分析:栈是逻辑结构(描述元素的线性关系),而循环队列(顺序存储的队列)、链表(链式存储)、哈希表(散列存储)均与存储结构直接相关。 以下哪一种术语与数据的存储结构有关()。 A. 栈 B. 队列 C. 散列表 D. 线性表 答案:C 以下哪种结构是逻辑结构,而与存储和运算无关()。 A. 顺序表 B. 散列表 C. 线性表 D. 单链表 答案:C 下列与数据元素有关的叙述中,...
博客公式和图片的设置
早上编辑矩阵时,发现本地Typora可以看到正常的矩阵,结果上传到博客上面就成这样了: 发现是在 Hexo 主题配置文件(如 Anzhiyu 主题的 _config.yml)中有配置没改,结果改了发现: 还是不对,搜了半天发现图片又炸了 接下来查了发现可能是渲染器的原因 Hexo折腾系列(六)数学公式渲染优化 - 江风引雨の小po站 下面是引用 有时候我们需要在文章里插入公式,Typora编辑器提供了很好的公式渲染支持,但这只能在本地编辑器里看到效果,而Hexo默认是不支持公式渲染的,因此很多Hexo主题都自带了katex或者mathjax组件来处理渲染数学公式。以我使用的Icarus主题为例,它本身就自带了这两款公式渲染工具,但实际使用效果却不佳,有些公式会显示不正确。究其原因,公式中的_等符号会被错误的识别为markdown语法,导致公式解析错误。本文综合了网上几种方法,得出了一个最为完美的解决方案。 出错原因 为了从根源解决问题,我们首先需要分析出错的原因。Hexo默认使用”hexo-renderer-marked”引擎渲染网页,该引擎会把一些特殊的markdow...
PTA-101h-数据结构(有序数组的插入、求链式线性表的倒数第 m 项)
实验1-1 有序数组的插入(C++版) 分数 20 作者 刘凯源 单位 华东师范大学 给定存储了n个从大到小排好序的整数,试将任一给定整数 x 插入数组中合适的位置,以保持结果依然有序。分析算法在最坏、最好情况下的时间、空间复杂度。具体来说,不妨假设整数序列存储为一个序列 array,这个序列的结构定义在下面给出,数据存放在数组 data 中。因为数组长度是有限的,我们在此假设 data 数组的最大长度为 kMaxSize。如果在执行插入之前,数组已经满了,则插入失败,返回 false;如果待插入的元素 x 已经在data中,则不要重复插入,返回 false;如果插入成功,则返回 true。 函数接口定义: bool DecrSeqInsert(ArrNode& array, int x); 其中ArrNode定义如下: class ArrNode { public: vector<int> data_; // 使用vector来动态管理数组大小 int size_; // 数组的大小 ...
矩阵的逆矩阵
一、伴随矩阵法 原理 若 nnn 阶方阵 AAA 的行列式 ∣A∣≠0|A| \neq 0∣A∣=0(即 AAA 可逆),则逆矩阵公式为: A−1=1∣A∣A∗A^{-1} = \frac{1}{|A|} A^* A−1=∣A∣1A∗ 其中 A∗A^*A∗ 是 AAA 的伴随矩阵(由 AAA 的代数余子式转置得到)。 步骤 计算行列式 ∣A∣|A|∣A∣:判断 AAA 是否可逆(若 ∣A∣=0|A| = 0∣A∣=0,则 AAA 不可逆)。 求代数余子式 AijA_{ij}Aij:对矩阵 A=(aij)A = (a_{ij})A=(aij),元素 aija_{ij}aij 的代数余子式为:Aij=(−1)i+jMijA_{ij} = (-1)^{i+j} M_{ij} Aij=(−1)i+jMij 其中 MijM_{ij}Mij 是 aija_{ij}aij 的余子式(划去 AAA 的第 iii 行、第 jjj 列后剩余子矩阵的行列式)。 构造伴随矩阵 A∗A^*A∗:将代数余子式矩阵转置,得到伴随矩阵 A∗A^*A∗(即 A∗A^*A∗ 的 (i,j)...
双链表
十一.双链表 (1)单链表VS双链表 这就有两个指针了 typedef struct DNode{ ElemType data; struct DNode *prior,*next;}DNode,*DLinklist; bool InitDLinkList(DLinklist &L){ L = (DNode *)malloc(sizeof(DNode)); if (L == NULL) return false; L -> prior = NULL; L -> next = NULL; return true;}void testDLinkList(){ DLinklist L; InitDLinklist(L);} (2)双链表的插入 bool InsertNextDNode (3)双链表的删除 (4)双链表的便历 (5)总结
PTA-101h-数据结构(在单链表 list 中查找元素 x 所在结点、在单链表 list 的第 i 个位置上插入元素 x、从单链表 list 中删除第 i 个元素)
算法2-6 在单链表 list 中查找元素 x 所在结点 分数 15 作者 陈越 单位 浙江大学 请编写程序,将 n 个整数顺次插入一个初始为空的单链表的表头。对任一给定的整数 x,查找其是否在链表中。 输入格式: 输入首先在第一行给出非负整数 n(≤20);随后一行给出 n 个 int 范围内的整数,数字间以空格分隔。最后一行给出待查找的 x,为 int 范围内的整数。 输出格式: 如果找到了 x 所在的位置,则输出该位置上链表结点的数据;否则在一行中输出 x 未找到。,其中 x 是输入的 x 的值。 输入样例 1: 51 2 3 4 54 输出样例 1: 4 输入样例 2: 51 2 3 4 50 输出样例 2: 0 未找到。 解析 #include <iostream>#include <cstdlib>using namespace std;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,* Lin...
基于IntelliJ IDEA的Spring Boot动态网页开发详细指南
基于IntelliJ IDEA的Spring Boot动态网页开发详细指南 我将为您详细介绍如何在IntelliJ IDEA中创建Spring Boot动态网页项目,包括每个文件的具体创建位置和详细步骤。 1. 在IntelliJ IDEA中创建Spring Boot项目 1.1 创建新项目 打开IntelliJ IDEA,点击 File → New → Project 在左侧选择 Spring Initializr 配置项目信息: Name: dynamic-web(项目名称) Location: 选择您的项目存储路径 Language: Java Group: com.example Artifact: dynamic-web Package name: com.example.demo Packaging: Jar Java: 17或11 点击 Next 1.2 选择依赖 在Dependencies页面,搜索并选择以下依赖: ✅ Spring Web - 创建Web应用程序 ✅ Thymeleaf - 模板引擎 ✅ Spring Boot DevTools - ...
PTA-101h-数据结构(返回单链表 list 中第 i 个元素值)
算法2-5 返回单链表 list 中第 i 个元素值 分数 15 作者 陈越 单位 浙江大学 请编写程序,将 n 个整数顺次插入一个初始为空的单链表的表头。对任一给定的位序 i(从 1 开始),输出链表中第 i 个元素的值。 输入格式: 输入首先在第一行给出非负整数 n(≤20);随后一行给出 n 个 int 范围内的正整数,数字间以空格分隔。最后一行给出位序 i,为 int 范围内的非负整数。 输出格式: 在一行中输出链表中第 i 个元素的值。如果这个元素不存在,则输出 -1。 输入样例 1: 51 2 3 4 54 输出样例 1: 2 输入样例 2: 51 2 3 4 50 输出样例 2: -1 解析 #include <iostream>#include <cstdlib>using namespace std;typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;int main()&...
PTA-101b-数据结构(在顺序表 list 中查找元素 x、在顺序表 list 的第 i 个位置上插入元素 x、从顺序表 list 中删除第 i 个元素、求单链表list中的元素个数,即表长)
算法2-1 在顺序表 list 中查找元素 x 分数 10 作者 陈越 单位 浙江大学 请编写程序,将 n 个整数存入顺序表,对任一给定整数 x,查找其在顺序表中的位置。 输入格式: 输入首先在第一行给出正整数 n(≤104);随后一行给出 n 个 int 范围内的不重复的整数,数字间以空格分隔;最后一行给出待查找的元素 x,也是 int 范围内的整数。 输出格式: 在一行中输出 x 在顺序表中的位置,即数组下标。如果没找到,则输出 -1。注意数组下标从 0 开始。 输入样例 1: 51 2 3 4 54 输出样例 1: 3 输入样例 2: 54 3 6 8 01 输出样例 2: -1 解析(按课本) #include <iostream>#include <cstdlib>using namespace std;#define MAXSIZE 10000typedef int ElemType;typedef ElemType * list;typedef struct { ElemType * elem; int leng...
PTA-101b-数据结构(两枚硬币、爆气球、在顺序表 list 中查找元素 x、在顺序表 list 的第 i 个位置上插入元素 x、从顺序表 list 中删除第 i 个元素)
练习1-2 两枚硬币 分数 25 作者 陈越 单位 浙江大学 伊娃喜欢收集全宇宙的硬币,包括火星币等等。一天她到了一家宇宙商店,这家商店可以接受任何星球的货币,但有一个条件,无论什么价格,都必须用 2 枚硬币一次付清,不能多也不能少。而她有多达 105 个硬币,于是求助于你。给定任一价格,请帮她找出可以付款的 2 枚硬币。 输入格式: 第 1 行给出 2 个正整数:n (≤105)为硬币枚数、m(≤103)为伊娃要付清的价格;第 2 行给出 n 枚硬币的面值,均为不超过 500 的正整数。同行数字间以空格分隔。 输出格式: 在一行中输出两枚硬币的面值 v1 和 v2 ,以 1 个空格分隔,满足条件 v1+v2=m,并且 v1≤v2。如果这样的解不唯一,输出 v1 最小的那个解。如果解不存在,则输出 No Solution。 输入样例 1: 8 151 2 8 7 2 4 11 15 输出样例 1: 4 11 输入样例 2: 7 141 8 7 2 4 11 15 输出样例 2: No Solution 解析 #include <iostream>using names...
