概述 数组和链表都是最基础的线性数据结构,可以用来实现栈,队列等非线性,有特定应用场景的数据结构,我们发现数组作为数据存储结构有很很多缺陷,在无序数组中搜索效率低,在有序数组中插入效率又很低,无论哪种情况删除操作效率都很低;而且数组一旦创建,大小不可更改。 本文我们介绍一种新的数据储存 ...
前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷。在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造成内存的浪费,过小又不能满足数据量的存储。 本篇博客我们将讲解一种新型的数据结构 链表。我们知道数组是一种通用的数据结构,能用来实现栈 队列等很多数据结构。而链表也是一种使用广泛的通用数据结构,它也 ...
2017-12-13 09:43 27 100095 推荐指数:
概述 数组和链表都是最基础的线性数据结构,可以用来实现栈,队列等非线性,有特定应用场景的数据结构,我们发现数组作为数据存储结构有很很多缺陷,在无序数组中搜索效率低,在有序数组中插入效率又很低,无论哪种情况删除操作效率都很低;而且数组一旦创建,大小不可更改。 本文我们介绍一种新的数据储存 ...
链表模板 链表结构 虚拟头节点 虚拟头节点用于是链表每一个节点都具有前一个节点,结构统一,可以规避特殊情况,使得链表头节点也可以当作普通节点处理。 获取链表倒数第k个节点 链表节点交换 链表反转 整个链表反转 🌈 法一:使用虚拟头节点 🌈 法二:不使用虚拟头节点(最快的方式 ...
链表与数组的区别? 1. 定义: 数组又叫做顺序表,顺序表是在内存中开辟一段连续的空间来存储数据,数组可以处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前有时无法准确确定数组的大小,只能将数组定义成足够 ...
栈 栈是一种特殊的线性表,仅能够在栈顶进行操作,有着先进后出的特性 我们先定义一个简单的 Stack 类 栈有以下几个方法: push:添加一个元素到 ...
摘要 上期共同探究了下动态数组的添加、删除等实现方法,想要再回顾一下的话,点击我去再看看。接下来继续探究数组。 其实,动态数组有个明显的缺点,就是有可能造成内存空间的大量浪费。那么有什么办法可以做到用多少就给多少呢?这时,咱接着探究一下链表,看看能不能解决这个疑问。 链表 话 ...
前言:终于到了疯狂学习数据结构的时候,换个好看的题图,开始吧.. 数组 什么是数组? 数组简单来说就是将所有的数据排成一排存放在系统分配的一个内存块上,通过使用特定元素的索引作为数组的下标,可以在常数时间内访问数组元素的这么一个结构; 为什么能在常数时间内访问数组元素 ...
:这里我们是只创建了一个空的链表,内部无数据,所以首结点的两个指针变量要为NULL。 开始 ...
一、概述 链表(linked list)是一组数据项的集合,其中每个数据项都是一个节点的一部分,每个节点还包含指向下一个节点的链接(参考 《算法:C语言实现》)。 根据结构的不同,链表可以分为单向链表、单向循环链表、双向链表、双向循环链表等。其中,单向链表和单向循环链表的结构如下图 ...