2025-2026-1《数据结构》测验1(线性结构)错题判断1.时间复杂度是根据算法写成的程序在执行时耗费时间的长度,往往与输入数据的规模有关。——对
2.单链表中引入头结点会使结点插入操作的时间复杂度降为常数阶。——错
解释:头结点不改变插入操作的时间复杂度,只简化边界逻辑。
插入操作的时间复杂度取决于 “插入位置”:
若在表头插入(已知头结点):无需遍历,直接修改头结点的后继指针,时间复杂度为 O (1)(有无头结点都一样,因为头结点本身就是已知的起点)。
若在表中或表尾插入(需找到插入位置的前驱节点):必须从表头遍历到目标位置,时间复杂度为 O (n)(n 是链表长度,与是否有头结点无关)。
3.所谓“循环队列”是指用单向循环链表或者循环数组表示的队列。——错
解释:循环队列的核心是 “逻辑上的循环(解决假溢出)”,而非 “必须用单向循环链表或循环数组实现”
4.可以通过少用一个存储空间的方法解决循环队列假溢出现象。 ——错
解释:解决循环队列假溢出的关键是 “逻辑循环”,而非 “少用一个存储空间”。
关键解析
假溢出的本质:普通顺序队列中,尾指针达数组末尾时,头部 ...
串4.1串的定义和实现4.1.1串的定义
串: 零个或多个字符组成的有限序列,如 S = ‘iPhone 11 Pro Max?’;
串名:S是串名;
串的长度:串中字符的个数n;
空串:n=0时的串;
子串:串中任意多个连续的字符组成的子序列称为该串的子串;
主串:包含子串的串;
字符在主串中的位置:某个字符在串中的序号(从1开始);
子串在主串中的位置:子串的第一个字符在主串中的位置;
空串 V.S 空格串:
M = ‘’ 是空串;
N = ’ ’ 是空格串;
串 V.S 线性表:
串是特殊的线性表,数据元素之间呈线性关系(逻辑结构相似);
串的数据对象限定为字符集:中文字符、英文字符、数字字符、标点字符…
串的基本操作,如增删改除通常以子串为操作对象
4.1.2串的基本操作假设有串 T = ‘’, S = ‘iPhone 11 Pro Max?’, W = ‘Pro’
StrAssign(&T, chars): 赋值操作,把串T赋值为chars;
StrCopy(&T, S): 复制操作,把串S复制得到串T
StrEmpty(S ...
2-4 栈操作的合法性分数 6
作者 DS课程组
单位 浙江大学
假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。
输入格式:输入第一行给出两个正整数 n 和 m,其中 n 是待测序列的个数,m(≤50)是堆栈的最大容量。随后 n 行,每行中给出一个仅由S和X构成的序列。序列保证不为空,且长度不超过100。
输出格式:对每个序列,在一行中输出YES如果该序列是合法的堆栈操作序列,或NO如果不是。
输入样例:123454 10SSSXXSXXSXSSSXXSXXSSSSSSSSSSSXSSXXXXXXXXXXXSSSXXSXXX
输出样例:1234YESNONONO
我的错误答案12345678910111213141516171819202122232425262728293031323334353637383940#include <iostream>#include <stac ...
1-6 水仙花数分数 10
作者 徐镜春
单位 浙江大学
水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=13+53+33。 本题要求编写程序,计算所有N位水仙花数。
输入格式:输入在一行中给出一个正整数N(3≤N≤7)。
输出格式:按递增顺序输出所有N位水仙花数,每个数字占一行。
输入样例:13
输出样例:1234153370371407
答案假如N为3
要先预计算0-9的N次方,避免重复计算,提高效率,到时候直接加数组里面的次方后的数
遍历每个数(100-999)
1234567891011121314151617181920212223242526272829303132333435363738#include <iostream>#include <cmath>using namespace std;int main() { int N; cin >> N; // 计算N位数的范围:从10^(N-1)到10^N - 1 long long s ...
1-29 大勾股定理分数 10
作者 陈越
单位 浙江大学
大勾股定理是勾股定理的推广:对任何正整数 n 存在 2n+1 个连续正整数,满足前 n+1 个数的平方和等于后 n 个数的平方和。例如对于 n=1 有 32+42=52;n=2 有 102+112+122=132+142 等。给定 n,本题就请你找出对应的解。
输入格式:输入在一行中给出正整数 n(≤104)。
输出格式:分两行输出满足大勾股定理的解,格式如下:
12a[0]^2 + a[1]^2 + ... + a[n]^2 =a[n+1]^2 + ... + a[2n]^2
其中解的数列 a[0] ... a[2n] 按递增序输出。注意行首尾不得有多余空格。
输入样例:13
输出样例:1221^2 + 22^2 + 23^2 + 24^2 =25^2 + 26^2 + 27^2
答案123456789101112131415161718192021222324252627282930#include <iostream>using namespace std;int main() { ...
2-3 符号配对分数 6
作者 DS课程组
单位 浙江大学
请编写程序检查C语言源程序中下列符号是否配对:/*与*/、(与)、[与]、{与}。
输入格式:输入为一个C语言源程序。当读到某一行中只有一个句点.和一个回车的时候,标志着输入结束。程序中需要检查配对的符号不超过100个。
输出格式:首先,如果所有符号配对正确,则在第一行中输出YES,否则输出NO。然后在第二行中指出第一个不配对的符号:如果缺少左符号,则输出?-右符号;如果缺少右符号,则输出左符号-?。
输入样例1:1234567void test(){ int i, A[10]; for (i=0; i<10; i++) { /*/ A[i] = i;}.
输出样例1:12NO/*-?
输入样例2:1234567void test(){ int i, A[10]; for (i=0; i<10; i++) /**/ A[i] = i;}].
输出样例2:12NO?-]
输入样例3:123 ...
vi和vim编辑器使用教程前言:
在很多时候VSCode可以替代vi这种命令行编辑器,但是在服务器的环境上,一般没有图形界面,也没有VSCode这种图形化编辑器,只能通过命令行来操作
而vi编辑器就是这种场景下最常用的编辑器
在服务器上出了问题,需要查看某个日志文件来排查问题的原因,或者需要定位某一个错误的位置,找到错误之后可能还需要修改某个配置文件等等(等把日志文件下载到本地,用VSCode查看和编辑,花费时间长)
vi 和 vim 是 Linux/Unix 系统中最常用的文本编辑器,vim 是 vi 的增强版(支持语法高亮、代码补全等),操作逻辑基本一致。以下是最核心的使用教程,涵盖入门到常用操作:
一、基本概念:三种模式
vim 的核心是模式切换,必须先掌握三种基础模式:
命令模式(Normal Mode)打开文件默认进入的模式,用于执行操作命令(如移动光标、删除、复制等)。
插入模式(Insert Mode)用于输入文本,按i/a/o等键进入,按Esc返回命令模式。
末行模式(Command-Line Mode)用于执行保存、退出、查找等命令,按:进入,按Esc返回命 ...
博客中设置字数统计功能
为什么将_config.anzhiyu.yml中的206行字数统计的功能从false变为true,不能统计字数,反而更新博客的时候会报错
这是因为 Anzhiyu 主题的字数统计功能依赖 hexo-wordcount 插件,但当前环境中缺少该依赖或函数定义不完整。以下是解决方案:
步骤 1:安装 hexo-wordcount 依赖在博客根目录执行命令:
1npm install hexo-wordcount --save
步骤 2:添加 totalcount 辅助函数在 themes/anzhiyu/scripts/helpers 目录下新建 wordcount.js,代码修改为:
123456module.exports = function(hexo) { const wordcount = require('hexo-wordcount'); hexo.extend.helper.register('totalcount', function(site) { return word ...
2-2 列车厢调度分数 5
作者 周强
单位 青岛大学
12345 1 ====== <--移动方向 /3 ===== \ 2 ====== -->移动方向
大家或许在某些数据结构教材上见到过“列车厢调度问题”(当然没见过也不要紧)。今天,我们就来实际操作一下列车厢的调度。对照上方的ASCII字符图,问题描述如下:
有三条平行的列车轨道(1、2、3)以及1-3和2-3两段连接轨道。现有一列车厢停在1号轨道上,请利用两条连接轨道以及3号轨道,将车厢按照要求的顺序转移到2号轨道。规则是:
每次转移1节车厢;
处在1号轨道的车厢要么经过1-3连接道进入3号轨道(该操作记为”1->3”),要么经过两条连接轨道直接进入2号轨道(该操作记为”1->2”);
一旦车厢进入2号轨道,就不可以再移出该轨道;
处在3号轨道的车厢,只能经过2-3连接道进入2号轨道(该操作记为”3->2”);
显然,任何车厢不能穿过、跨越或绕过其它车厢进行移动。
对于给定的1号停车顺序,如果经过调度能够实现2号轨道 ...
技术工具
未读git一、git安装、配置、初始化配置1.基础配置配置名字
12$ git config --global user.name "zhangzhang"$ git config --global user.email zhangzhang@example.com
查看配置
12git config --global user.name # 查看用户名git config --global user.email # 查看邮箱
2.创建仓库在当前文件夹新建一个项目:在当前文件夹初始化一个 Git 仓库,初始化后该文件夹成为本地 Git 仓库,支持所有 Git 本地操作(如提交、版本回退等),不需要联网即可使用。
1$ git init
3.克隆别人的项目去项目界面github上,复制URL:
本地用git clone去克隆网络上的项目
1git clone https://github.com/torvalds/linux.git
二、git文件状态、提交版本如何修改文件,创建我们的版本
当我们$git init创建完仓库,会赋予这个仓库每一个文件都有一 ...


