数据结构(2)

内存泄漏:内存泄漏(Memory Leak)是指程序在运行过程中动态分配了内存,但在不再需要这些内存时未能释放,导致这部分内存无法被再次利用。内存泄漏是一个常见的编程错误,尤其在使用手动内存管理的语言(如 C 和 C++)时更为常见。内存泄漏的原因内存泄漏通常由以下原因造成:1. 忘记释放内存:分配了内存后没有通过相应的函数(如 free 或 delete)释放。

  1. 多次分配同一内存:多次分配内存但只释放了一次。

  2. 指针丢失:分配了内存后,指向这块内存的指针丢失了,导致无法释放。

  3. 循环引用:在某些语言中(如 C++),对象之间相互引用导致无法释放.。

  4. 静态存储分配:静态分配的内存没有被显式释放。

内存泄漏的影响内存泄漏会导致以下问题:1. 性能下降:随着内存泄漏的积累,可用内存减少,程序运行速度变慢。2. 系统不稳定:严重的内存泄漏可能导致系统资源耗尽,甚至崩溃。3. 长时间运行问题:对于长时间运行的服务程序,内存泄漏可能导致系统逐渐失去响应能力(valgrind检查内存泄漏)

链表创建,头插,判空:

链表尾插,打印:

链表头删,尾删,关键字查找:

链表节点修改和链表回收:

快慢指针法:快慢指针法(Fast and Slow Pointer Technique),也称为"龟兔赛跑算法",是一种常用的算法技巧,常用于链表相关的问题中。这种方法通过设置两个指针,一个快指针(通常每次移动两步)和一个慢指针(通常每次移动一步),来解决各种链表问题,如检测环、寻找环的入口点、查找中间节点等。

快慢指针法的基本思想1. 快指针:每次移动两步。2. 慢指针:每次移动一步。3. 相遇:如果链表中有环,则快指针最终会追上慢指针。4. 环的入口点:如果快慢指针相遇,则可以找到环的入口点。5. 链表中间节点:如果链表中没有环,则快指针到达链表末尾时,慢指针恰好位于链表的中间位置。

应用场景1. 检测环•问题:判断链表中是否存在环。•解决方案:使用快慢指针,如果快指针追上了慢指针,则存在环。2. 寻找环的入口点•问题:如果链表中存在环,找到环的入口点。•解决方案:当快慢指针第一次相遇时,将其中一个指针重置到头节点,然后两个指针每次各移动一步,再次相遇时的节点即为环的入口点。3. 查找中间节点•问题:找到链表的中间节点。•解决方案:使用快慢指针,当快指针到达链表末尾时,慢指针正好位于中间位置。

(1)寻找中间节点:

(2) 寻找倒数第k个节点

链表逆序:

链表插入排序:

在其他结构体中声明结构体类型指针原因:指针大小固定,自动会开出指针类型大小空间,不能是变量,因为大小不固定,结构体可以直接赋值

在 C 语言或 C++ 中,一个结构体(struct)可以声明为包含自身作为成员,这被称为递归结构体或自引用结构体(self-referential struct)。这种结构体允许定义指向同一结构体类型的指针成员,从而可以方便地创建链表或其他递归数据结构。实际上,这样做并不会直接导致编译错误,因为标准允许这样的定义,只要后续使用时遵循一定的规则。为什么不会出错?1. 延迟解析(Deferred Parsing):•在 C 语言中,结构体声明可以出现在其他声明之前,这意味着编译器可以先看到结构体的名称,然后再看到其完整的定义。•当一个结构体声明包含指向自身的指针时,编译器可以先处理指针类型,然后在完整定义出现后再处理结构体的其他部分。2. 前向声明(Forward Declaration):•结构体可以先进行前向声明,然后再给出完整的定义。前向声明告诉编译器结构体的存在,但没有给出其完整的布局。例子前向声明 + 完整定义// 前向声明

gcc *.c

相关推荐
Bio Coder1 天前
vim 一次注释多行 的几种方法
linux·编辑器·vim·注释·快捷键·方法·取消注释
赵闪闪1682 天前
Node.js 安装与环境配置详解:从入门到实战
node.js·编辑器·vim
Lllongroad3 天前
Vim 命令、操作、文件操作示例
linux·编辑器·vim
IT_张三3 天前
Ubuntu Linux使用前准备动作 安装vim编辑工具
linux·ubuntu·vim
丶Darling.3 天前
Linux之vim全选,全部复制,全部删除
linux·vim·excel
仙长道号-Linux真人3 天前
gvim添加至右键、永久修改配置、放大缩小快捷键、ctrl + c ctrl +v 直接复制粘贴、右键和还原以前版本(V)冲突
c语言·开发语言·vim
酒酿小圆子~3 天前
Linux之vim模式下全选命令
linux·运维·vim
YRr YRr4 天前
如何解决Ubuntu 20.04中Vim编辑器在按下Ctrl+S时暂停响应的问题
ubuntu·编辑器·vim
x-cmd4 天前
x-cmd pkg | helix - 用 Rust 打造的文本编辑器,内置 LSP 和语法高亮,兼容 Vim 用户习惯
运维·rust·vim·开发·lsp·命令行·文本编辑
RationalDysaniaer5 天前
vim用法
linux·编辑器·vim