数据结构5:栈和队列 数据结构4:栈和队列栈栈(stack)是限定仅在表尾进行插入或删除操作的线性表。因此对栈来说,表尾端有其特殊含义,称为栈顶(top),相应地,表头端称为栈底(bottom)。不含元素的空表称为空栈。假设 S=(a1, a2, …, an),则称 a1 为栈底元素,an 为栈顶元素。栈中元素按 a1, a2, …,an 的次序进栈,退栈的第一个元素应为栈顶元素。换句话说,栈的修改是按照后进先出的原则 2025-04-06 网络工程 #网络工程 #算法
数据结构4:双向链表 数据结构4:双向链表前情提要上次我们讲到了局部有环的单链表。 循环链表:找出入口和长度现在需要你找出一个循环链表的环入口。 我们的步骤是: 设定快指针的速度是慢指针的两倍。 当快慢指针相遇时,慢指针已经走了 k 步,快指针走了 2k 步。 当快慢指针相遇时,我们已经进到了环中 现在设立一个新指针指向快指针,使其遍历并记录步数直到与快慢指针相遇,步数就是环长度。 初始化快慢指针为头指针,然后让快 2025-04-05 网络工程 #网络工程 #算法
数据结构3:链表的运用和循环链表 数据结构3:链表的运用写在前面:链表是数据结构中很重要的一个,为此,我会单开一个章节来记录链表的使用,请不要好高骛远。 例题一:倒数定位 假设该链表只给出了头指针S。在不改变链表的前提下,请设计一个尽可能高效的算法,查找链表中倒数第k个位置上的结点(k为正整数)。若查找成功,算法输出该节点的data域的值,并返回1;否则,只返回0。 值得注意的是,如果我们一直遍历到链表的末尾,再掉头,无疑会导致 2025-04-04 网络工程 #网络工程 #算法
数据结构2:顺序表与链表 数据结构2线性表定义由n(n>=0)个数据特性相同的元素构成的有限序列,称为线性表。 n == 0时,称为空表。 对于头一个元素,我们称为“头节点”,对于最后一个数据元素“尾节点”。 除了头节点之外,每个元素的前一个元素,叫做“前驱”。 除了尾节点,每个元素的后一个元素叫做“后驱”。 顺序表用一组连续的内存单元依次存储线性表的各个元素,也就是说,逻辑上相邻的元素,实际的物理存储空间也是连续的 2025-04-03 网络工程 #算法
数据结构:算法时间复杂度 数据结构 虚拟内存地址内存条、显卡、各种适配卡都有其各自的存储地址空间。操作系统将这些设备的存储地址空间抽象成一个巨大的一维数组空间。对于内存的每一个字节会分配一个32位或64位的编号,这个编号称为内存地址。 类型定义C程序编译后,会以三种形式使用内存: 静态全局内存静态声明的变量和全局变量使用这部分内存,这些变量在程序开始运行时分配,直到程序终才消失。 自动内存(栈内存)函数内部声明的变量使用 2025-04-01 网络工程 #算法
记一次去医院的思考 记一次去医院的思考周三,一个没课的下午,我前往医院看望W,在医院漫长的等待的过程中,我无时无刻忍受着令人作呕的药水味,还有前台电话不绝的响声和护士长的对话声。来来往往的人大多年纪很大,岁月的风在他们脸上吹过,留下阵阵涟漪,他们带着泛黄的电饭锅,刚买的方便面,老旧的热水瓶,推着自己的挚爱亲朋走向病房。我和W的朋友一路奔走,从2号楼到5号楼,期间经过了4次电梯,在医院宽大的特制电梯时,我们往往和一些坐 2025-03-19 随笔 #随笔 #思考
《战争之王》:必须存在的恶魔 矛盾与荒谬并行的世界 “可能对你来说我是一个恶魔,但不幸的是,我是一个必须存在的恶魔。” ——尤里 尤里的发迹史堪称全球化时代的资本寓言。从基辅餐馆的潦倒移民到掌控全球地下军火贸易的”战争之王”,他的成功轨迹完美契合新自由主义经济法则。几十本护照和假身份帮助他在边境畅通无阻;把武装直升机的武器和本体分开运输,就成了“人道主义”救援直升机;面对到来的国际 2025-02-03 随笔 #电影 #世界
2024这一年 写在前面我的2024,被高考泾渭分明地划分为了两半。 1-6月我有个特点,一些令我感到痛苦的经历不会在我的记忆中存在太久。 1月到6月,我已经记得不大清的,我直接的那段时间太阳很大,血红的标语贴的到处都是,我们披坚执锐,在数不清的模拟中挣扎,在无数次西西弗斯一般的努力中等待时间流逝,在那段时间,有因为一句无聊的笑话引发的快乐,有模拟考试名次渐进的喜悦,有深夜备战的痛苦,我只记得那时,全家人的期望都 2024-12-29 随笔 #自我 #2024
扫雷开发笔记 扫雷开发笔记思维导图 流程图 难度设置简单:9*9 10雷 中级: 16*16 40雷 困难 : 20*20 70雷 完整代码见Github仓库,如果喜欢可以点个Star。 写在前面我们使用了二位数组来实现扫雷,因Easyx库使用了C++的库且C++已适配绝大部分C语言的语法,所以我们提交的是.cpp文件,并封装了exe文件,可以直接双击运行。 开发环境使用IDE:VS 2022 项目属性:使用 2024-12-12 网络工程 #编程 #开发 #项目
希尔排序:基于插入算法的改进版本 希尔排序:基于插入算法的改进版本平均时间复杂度:O(n log n) 最好时间复杂度:O(n log^2 n) 最坏时间复杂度:O(n log n) 稳定性:不稳定 特点:1.处理基本有序的效率较高 2.数据量比较小时效率较高 希尔排序,又名缩小增量排序,是基于插入排序的一种改进算法,解决了插入排序一次只能移动一个元素造成的低效问题。 原理1.设定一个增量整型gap = len / 2,向下取整, 2024-12-08 网络工程 #编程 #网络工程 #算法