现在版本是用理论幅相算出来的 y(t);换成“调用 libm2k / Scopy后端”:用 AWG 输出频率为 f_sig 的正弦;用 Scope 同步采集两路...
代码里先定义了图的结构(graph),包含顶点数组(ver[]存储 A-I)、邻接矩阵(arc存储边的权值)、顶点数和边数。create_graph函数初始化了...
存储图的方式有很多,最直观的是 “邻接矩阵”—— 用一个二维数组记录顶点间的连接关系。但邻接矩阵有个明显的缺点:如果图的顶点多但边少(比如稀疏图,现实中大部分图...
想要用代码实现带权图,首先要解决 “如何存储” 的问题。最经典的方式就是邻接矩阵—— 用一个二维数组记录顶点之间的权重,让复杂的 “图关系” 变成清晰的 “表格...
在编程世界里,队列(Queue)是一种遵循 “先进先出”(FIFO,First In First Out)规则的线性数据结构,就像我们日常生活中的排队场景 ——...
栈的顺序结构,本质上是用数组来实现的栈结构。我们知道数组是一块连续的内存空间,通过下标可以快速访问元素,利用这一特性,顺序栈能高效地完成 “入栈” 和 “出栈”...
拆分完成后,就进入 “治” 的环节 —— 把两个有序的子数组合并为一个有序数组。这一步需要借助临时数组tmp,避免直接在原数组上操作导致数据丢失。
可能有人会问:既然顺序表底层是数组,那直接用数组不就行了?其实顺序表的价值,就在于解决了数组的 “痛点”——
这段代码的问题在于,内层循环j从 0 开始遍历整个数组,导致在每一轮i的循环中,会进行多次不必要的交换。而标准的简单选择排序会优化这一点,在内层循环中先找到最小...
举个直观的例子:若数组为52,22,32,44,56,65,78,79,0(注意代码中数组定义为 10 个元素,最后一个元素未显式赋值,默认是 0),第一次选基...
希尔排序的改进思路很巧妙:先将整个数组按 “增量” 分成多个子数组,对每个子数组进行直接插入排序;然后逐步缩小增量,重复子数组排序操作;直到增量缩小为 1,此时...
字符串在 C 语言中以字符数组形式存储,且必须以'\0'作为结束标志 —— 这是数组拼接的核心前提。所谓 “数组拼接”,本质就是将两个独立字符数组中的有效字符(...
在 C 语言编程中,数组是最基础也最常用的数据结构之一。而数组插入操作,作为数组操作的重要组成部分,是每个 C 语言学习者必须掌握的技能。它看似简单,却蕴含着对...
在 C 语言学习过程中,strlen 和 sizeof 是两个高频出现的 “计算工具”,但很多初学者容易将它们混淆,甚至在实际开发中因误用导致程序 bug。本文...
在 C 语言编程中,字符数组的倒序操作是常见的基础需求。常规的循环实现方式大家可能并不陌生,但今天我想和大家分享一种更具 “编程思想” 的实现方式 ——递归。递...
在数据结构的世界里,图是一种比数组、链表、树更为复杂的非线性结构,它能够轻松表示现实生活中多对多的关系,比如社交网络中的好友关系、城市交通路线中的站点连接等。而...
在 C 语言编程中,数组相关的算法题常常考验我们对数据特性和运算规则的灵活运用。今天要解决的问题十分经典:将 1-1000 这 1000 个不重复的数,放入一个...
在 C 语言的学习旅程中,指针无疑是一个绕不开的重点,也是很多初学者感到困惑的难点。有人说 “不懂指针,就不算真正学会 C 语言”,这句话虽有些绝对,却充分体现...
在 C 语言的学习旅程中,排序算法是绕不开的重要知识点,而冒泡排序作为最基础、最易理解的排序算法之一,更是初学者入门的绝佳选择。今天,我们就从一段具体的 C 语...
在正式分析代码前,我们先明确二分法查找的适用条件和核心逻辑。二分法查找仅适用于有序数组(本文以升序数组为例),其核心思路可概括为 “三步走”: