动态数据结构(如链表)的意义是什么?

What is the significance of Dynamic data structure(like linked list)

本文关键字:是什么 数据结构 链表 动态      更新时间:2023-10-16

一旦创建链表的程序关闭而不删除动态内存,我知道动态内存需要删除,那么我怎么能让它在重新打开程序后恢复工作,如果我不能恢复链表,那么链表的用途是什么

当你退出程序时所有都消失了。包括链表和非链表、数组、单独对象等。

如果你想要一些东西持久化,你必须保存它,然后加载它。像在文本编辑器中一样,使用load和save。

有完整的库来帮助解决这个问题,您可以从boost::serialization开始。

链表本身与数据持久化无关。

与其他数据结构相比,链表具有特定的性能特征。找到一个特定的元素可能需要多长时间是未知的,可能需要遍历整个列表(线性时间),但是插入和删除总是花费相同的小固定时间(常数时间)。

您可能想要阅读有关STL容器的内容,因为它们内部具有类似的数据结构:在哪种情况下我使用特定的STL容器?

如果你想让数据在你的应用运行时间之后持续存在,你需要研究读/写文件、数据库、网络通信或任何可能满足你特定需求的持久机制。

链表的关键在于它是一种灵活的数据结构,供您的代码使用——它不像数组那样有固定的长度,因此您可以根据需要添加和删除项目。

人们谈论动态内存分配的原因是因为它的内存分配取决于程序的运行时行为,这可能会根据它读取的数据而改变。这与静态内存分配相反,静态内存分配对于每次运行的给定代码路径基本上是相同的,并且对于某些问题更难处理。然而,在某些嵌入式系统上,这是您唯一的选择,并且在某些情况下,在静态内存分配中工作也可以更快(动态分配往往有与之相关的速度损失)。

整个话题其实很复杂,经常让我头疼。

动态分配的内存不会在程序运行之间持续存在——操作系统会在程序关闭时清理所有内存——因此动态内存分配和数据持久性之间没有关系。你必须使用其他机制,通常存储在磁盘上的某个地方。在进程结束后,你无法取回内存,这就是现代多任务"保护内存"模型的本质,你无法访问甚至看不到属于其他进程的内存。