数据结构
文章平均质量分 74
We_are_family678
这个作者很懒,什么都没留下…
展开
-
数据结构之循环队列
数组表示的问题 对于队列最好的方法是使用链表实现,因为对于数组来说,队列可能会出现下面这种情况: 如图所示,不可以继续添加元素,否则会造成数组越界而遭致程序出错。然而此时又不应该扩充数组,因为还有大量实际空间未被占用。 此时我们应该如何解决这个问题呢?我们将其实现为循环队列。理解循环队列 何谓循环队列?首先我们要说明的是循环队列仍然是基于数组实现的。但是为了形象化...原创 2018-03-14 21:57:31 · 471 阅读 · 0 评论 -
单链表基本操作
最近正好在复习数据结构,链表作为比较重要的数据结构,特地自己实现了一遍。首先我们要理解几个概念:1、链式存储是最常用的存储方式之一,可以表示线性和非线性的数据结构。2、按照链式存储的线性表简称为链表。3、单链表是一种链式存取的数据结构,用一组地址任意的存储单元来存放线性表中的数据元素。4、链表由节点构成,每个节点的构成为:元素+指针(指向后继元素)理解这几个基本的概念之后,考虑如何链表的功能:1、...原创 2018-03-22 18:37:16 · 207 阅读 · 0 评论 -
双向循环链表
单链表是不错的,但是呢,人无完人,玉有微瑕,单链表也不是完美的,单链表的缺点是只能往前,不能后退,虽然有循环单链表,但后退的成本还是很高的,需要跑一圈。在这个时候呢,双向链表就应运而生了,再加上循环即双向循环链表就更加不错了。所谓双向链表只不过是添加了一个指向前驱结点的指针,双向循环链表是将最后一个结点的后继指针指向头结点。下图以及以下代码为带头结点的双向循环链表的表示。然后聊的事情还按老规矩在代...原创 2018-04-04 10:06:43 · 162 阅读 · 0 评论 -
容器的概观和分类
研究数据结构的特定排列方式,以利于搜寻或排序或者其它特殊目的,这一专门学科我们称为数据结构。任何特定的数据结构都是为了实限某种特定种类的算法。STL容器即是将运用最广的一些数据结构实现出来。序列式容器:所谓序列式容器,其中的元素都可序,但未必有序。C++语言本身提供了一个序列式容器array,STL另外再提供vector,list,deque,stack,queue,priority-queue等...原创 2018-04-05 21:30:41 · 191 阅读 · 0 评论 -
单向链表反转(倒置)问题
今天遇到单向链表的反转的问题,于是静下心来好好想了一番。 解题思路如下图:假设当前创建好的链表如下:首先让头节点与第一个元素节点断开,但是要注意在断开之前需要用p指针指向第一个元素节点来保存第一个元素节点的位置,然后再断开。在这里有一个指针q指向一个指针域为空的节点,这个节点用来做为链表反转后的最后一个节点。让第二个元素节点的指针从指向第三个元素节点变为指向第一个元素节点,以此类推,直至指针p指向...原创 2018-05-31 11:26:01 · 343 阅读 · 0 评论 -
程序员常说的「哈希表」是个什么鬼?
今天聊聊「哈希表」,「哈希表」主要作用在于高效查找。 在编程实现中,常常面临着两个问题:存储和查找,存储和查找的效率往往决定了整个程序的效率。 脑补下,你在家里忘记了指甲刀放在哪里,通常要在你家所有抽屉中顺序寻找,直到找到,最差情况下,有N个抽屉,你就要打开N个抽屉。这种存储方式叫数组,查找方法称为「遍历」。 脑补下,你是一个整理控,所有物品必须分门别类放入整理箱...原创 2018-08-29 16:02:01 · 284 阅读 · 0 评论