| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数组与链表 -> 正文阅读 |
|
[数据结构与算法]数组与链表 |
1.知识点1.内存的工作原理 2.内存的工作原理计算机就像是很多抽屉的集合体,每个抽屉都有地址。 ?需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式——数组和链表。 3.数组?数组(Array)是有序的元素序列。组成数组的各个变量称为数组的分量,也称为数组的元素 ?假设你要编写一个管理待办事项的应用程序, 为此需要将这些待办事项存储在内存中 ?假设你要添加第四个待办事项,但后面的那个抽屉放着别人的东西 再将所有待办事项都移到那里 ??从这个例子可以看出来 数组存储比较麻烦 4.链表与数组相比链表的主要区别在于其中的元素可存储在内存的任何地方。(存在head 和 tail) 链表的每个元素都存储了下一个元素的地址,从而使一系列随机的内存地址串在一起。 在链表中添加元素很容易:只需将其放入内存,并将其地址存储到前一个元素中。 4.1链表的几种形式? ?1.单向链表:单向链表也叫单链表,是链表中最简单的一种形式, 它的每个节点包含两个域,一个信息域(储存元素)elem和一个链接域next。这个链接指向链表中的下一个节点, 最后一个节点的链接域则指向一个空值。 2.单向循环链表:单链表的一个变形是单向循环链表,链表中最后一个节点的链接域不再为None,而是指向链表的头节点。 3.双向链表:?一种更复杂的链表是“双向链表”或“双面链表”。 每个节点有两个链接:一个指向前一个节点,当此节点为第一个节点时,指向空值;而另一个指向下一个节点,当此节点为最后一个节点时,指向空值。第一个head和最后一个的next? 5.数组和链表进行比较5.1?查找元素需要查找元素时,数组往往更加便捷。例如我们想要查找当日的第三个事项。在数组中我们只要按照索引2即可查到,而在链表中我们要从头开始搜索,因为我们不知道下一个事项的存储位置。 5.2 插入元素需要在中间插入事项时,数组和链表哪个更好呢? 1.使用链表时,插入驶向很简单,只需修改它前面的那个事项指向的地址。找个地方储存一个新的元素,可以把原来的地址改成现在新的? 2.而使用数组时,则必须将后面的元素都向后移 5.3删除元素如果你要删除元素呢?链表也是更好的选择,因为只需修改前一个元素指向的地址即可。而使用数组时,删除元素后,必须将后面的元素都向前移。不同于插入,删除元素总能成功。如果内存中没有足够的空间,插入操作可能失败,但在任何情况下都能够将元素删除。 下面是常见数组和链表操作的运行时间 6.数组和链表的优缺点?1.数组的优点 3.链表的优点 ? ? ? ? ? ? ? ? ? ? ? ? ? ?? 7.具体代码可以看接下来这些内容 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:19:19- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |