![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 76
一起学编程
这个作者很懒,什么都没留下…
展开
-
【数据结构和算法】学编程必知必会的50个代码实现,你都会了吗?
如果你能实现这50个代码,那你的编程绝对是学得没什么问题了!原创 2022-09-03 15:05:26 · 27183 阅读 · 0 评论 -
【C语言教程】“双向循环链表”学习总结及其代码实现
双向循环链表和它名字的表意一样,就是把双向链表的两头连接,使其成为了一个环状链表。只需要将表中最后一个节点的next指针指向头节点,头节点的prior指针指向尾节点,链表就能成环儿,如图所示:需要注意的是,虽然双向循环链表成环状,但本质上还是双向链表,因此在双向循环链表中,依然能够找到头指针和头节点等。双向循环链表和双向链表相比,唯一的不同就是双向循环链表首尾相连,其他都完全一样。注意:因为我上面已经讲了双向链表,所以这里只注重讲他们的实现差异。另因为带头节点会更好操作,所以我的代码都有头节点。原创 2022-05-24 16:01:24 · 346 阅读 · 0 评论 -
编程基础必学:浅析数据结构,学校老师应该没有这样讲过吧?
1.计算机科学的两大支柱:1.数据结构 2.算法2.数据结构定义: 一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科。数据(Data): 是对信息的一种符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素(Data Element): 是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。一个数据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。 数据结构(Data Stru...原创 2022-04-23 16:32:52 · 271 阅读 · 0 评论 -
编程通识:数据结构的三大要素,你都有所了解吗?
数据结构主要关注逻辑结构、数据的运算和物理结构(存储结构)。01 逻辑结构集合结构和数学中的集合概念类似,各个元素同属一个集合。线性结构的元素像一条线。树形结构的元素就像一棵树,常见的思维导图、文件夹展开的目录都是树形结构。图结构像一张网。02 数据的运算数据的运算其实就是大家熟悉的增删改查,不过相比数据库现成的SQL,数据结构实现起来有很多细节需要考虑。03 物理结构物理结构是计算机存储的结构。比如线性结构在底层需要物理结构来实现。顺序存储把转载 2022-04-22 16:00:26 · 192 阅读 · 0 评论 -
C语言数据结构:什么是树?什么是二叉树?
在二叉树之前的数据结构学习中,我们学习了顺序表、链表、栈、队列这几种结构,它们都是用链表或者数组的方式来实现的,主要考察我们对结构体的运用!今天让我们来学习一个新的数据结构,也就是下面这副图里面的树啊不好意思,图拿错了!????是下面这个才对1.什么是树?1.1树的概念树是一种非线性的数据结构,它是由n个有限节点组成的具有一定层次关系的集合。把它叫做树是因为它看起来的确像一个树的根部当然也可以理解为是树干在上,树叶在下的结构有一个特殊的节点,被称为根节点,也就是树转载 2022-04-14 18:43:42 · 683 阅读 · 0 评论 -
知识分享:数据结构常用 7 种排序算法(无基数排序)
为了让大家掌握多种排序方法的基本思想,本篇文章带着大家对数据结构的常用七大算法进行分析:包括直接插入排序、希尔排序、冒泡排序、快速排序、简单选择排序、堆排序、归并排序等,并能够用高级语言实现。希望通过对这些算法效率的比较,加深对算法的理解。①插入排序②折半插入排序③选择排序④起泡排序⑤快速排序⑥希尔排序⑦堆排序⑧归并排序排序算法的分析图解:用随机数(介于1-100)产生10个待排序数据元素的关键字值)。① 采用直接插入排序和希尔原创 2022-03-14 16:00:25 · 221 阅读 · 0 评论 -
知识分享:数据结构—C语言实现“顺序查找”和“折半查找”
今日份分享:使用C语言实现静态查找表中的顺序查找和折半查找,并分析时间长短Search.h文件#define OK 1#define ERROR -1#include <stdio.h>#include<stdlib.h>#include<time.h>#define MAXSIZE 100typedef int KeyType;typedef int ElemType;typedef struct{ElemType da原创 2022-03-12 18:34:54 · 1808 阅读 · 0 评论 -
数据结构:「顺序表基本操作」及其「时间复杂度分析」
顺序表定义1,前言线性表的顺序存储又称为顺序表。它是用一组地址连续的存储单元依次存储线性表中的数据元素,从而使得逻辑上相邻的两个元素在物理位置上也相邻。其最大的特点就是:元素的逻辑顺序与其物理顺序相同。线性表的顺序存储结构中任一元素都可以随机存取,并且注意:线性表中元素的位序是从1 开始的,而数组中元素的下标是从0 开始的。假定线性表的元素类型为 EleType ,则线性表的顺序存储类型可以描述为:2,动态实现1,结构定义:2,初始化顺序表:3,增加动态数组的...原创 2022-02-18 17:04:03 · 7094 阅读 · 0 评论 -
C语言编程:已知二叉树前序和中序,如何求出后序遍历?
题目已知二叉树前序为 ABDFGCEH 后序序列为 BFDGACEH ,要求输出后序遍历为 FGDBHECA大体思路又先序得出根,先序的根后为左树一部分,我们再在中序序列里找到先序的根,此处之前即为左树(可以画图好好理解下),此处之后为右树。然后就是不断递归即可。代码#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX 100typedef stru...原创 2021-08-20 17:01:01 · 2041 阅读 · 2 评论 -
C语言编程:如何计算二叉树叶子结点数目?
我们都知道,一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。节点:就是一个图中的0、1、2~~15,这些就叫节点。叶子节点:就是没有子节点的节点,比如图中的8、9~~15这些。接下来,我们直接用代码看一下怎么计算二叉树叶子结点数目(C语言):#include<stdio.h>#include<stdlib.h>int depth;ty原创 2021-08-18 13:39:17 · 6380 阅读 · 0 评论 -
拓扑排序简单实现(C语言)
今天刷洛谷的图时看到好多题都要用图的拓扑排序,索性就学一把,敲一敲代码学学算法也复习一下图的具体操作和栈的使用。作者:掘金丨MCL拓扑排序对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。通常,这样的线性序列称为满足拓扑次序(Topological Order)的序列,简称拓扑序列。简单的说,由某个集合上的一个偏序.原创 2021-08-16 16:58:16 · 929 阅读 · 0 评论 -
C语言排序方法——冒泡排序详解!你学会了吗?
冒泡排序法的基本思路为:每次将相邻的两个数比较,将小的调在前面。举个例子,如果有6个数:9,8,5,4,2,0。第一次先将最前面的两个数9和8对调。第二次将第2个数和第3个数对调(9和5)······如此共进行5次得到8,5,4,2,0,9的顺序,可以看到:最大的数9已经沉到了最底下成为了最下面的一个数,而小的数“上升”。然后进行第二轮比较,对余下的5个数进行冒泡排序,然后这五个数中最大的数8沉到了最底下。如此6个数进行5趟排序,才能使6个数按大小顺序排列。第一趟中要进行两个数之间的比较共5次,第二原创 2021-07-21 18:49:52 · 11792 阅读 · 0 评论 -
【数据结构】C语言排序方法——快速排序详解!
快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来。算法步骤:1 从数列中挑出一个元素,称为 "基准"(pivot)。2 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退原创 2021-07-19 17:00:43 · 533 阅读 · 0 评论 -
【数据结构】C语言排序方法——堆排序详解!
堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。对于堆的操作通常需要以下3个步骤:最大堆调整(Max Heapify):将堆的末端子节点作调整,使得子节点永远小于父节点创建最大堆(Build Max Heap):将堆中的所有数据重新排序堆排序(HeapSort):移除位在第一个数据的根节点,并做最大堆调整的递归运算。C代码实现:代码看起来比较抽象,将代码运行时数据交换的过程打印出来,然后结合二叉树的图形来分析,就会比较好理解原创 2021-07-17 17:00:58 · 675 阅读 · 0 评论 -
【数据结构与算法】二分法丨有序数组中二分法的使用
基本二分法的描述二分搜索(英语:binary search),也称折半搜索、对数搜索,是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。复杂度分析:最坏情况下,关键词比较次数为log2(n+1),且期望时间复杂度为O(log2n);原创 2021-07-03 20:11:13 · 733 阅读 · 2 评论 -
【数据结构与算法】哈希算法的原理和应用详解!
在程序员的实际开发中,哈希算法常常能用得到,本文以哈希算法的原理和应用为核心,和大家详细讲解一下哈希算法的概念、常见算法以及原理、在信息安全的应用等等。一、概念哈希表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。哈希的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键的情况,我们将其扩展到可以处理更加复杂的类型的键..原创 2021-06-23 16:10:49 · 2006 阅读 · 6 评论 -
程序员必看:到底为什么要掌握数据结构与算法?看了就懂了
当代程序员,也就是我们,其实是非常幸运的,为什么?因为前人,也就是那些大牛已经为你铺好路了。大牛铺路导致的后果就是整个计算机系统像这个汉堡包一样是分层的:越是上层越抽象,用起来也就越方便。大牛们是怎么铺路的最开始的计算机只是一堆 CPU 与内存等硬件,要让这群大爷工作需要直接汇编编写机器指令。这也太麻烦了吧,因此那些大牛鼓捣出一个叫做高级语言的东西,现在方便多了,但程序不能只运行在一种架构上吧,为了让程序可以不加改动的到处运行标准库出现了,标准库对上层屏蔽了底层差异。现在..转载 2021-04-19 15:45:10 · 407 阅读 · 0 评论 -
必须学好的数据结构知识:队列与栈!今天再来给你上一课
在数据结构中,队列与栈的产生主要是为了满足某些特殊的编程运算,数据结构最大的一个特点就是为算法提供基础,使用不用的数据结构甚至能直接影响算法的好坏,多数情况下,数据结构与算法是一种相辅相成的关系。栈:和我们上节说到的一样,栈也是一种线性的存储结构。但是它限制了只能在线性表的尾部进行数据插入和删除操作,根据一张图示来进行形象说明。栈的数据存放原则遵循 先进后出 的数据存放原则,因为它的数据出口只有一个,那就是栈顶,也就是上面所说的栈尾。如果一个栈里面没有数据元素的存放又被称之为 空栈,这种数据结构原创 2021-03-07 21:07:38 · 101 阅读 · 0 评论 -
计算机专业丨大学生们的疑问:学习数据结构与算法有什么用?
我以前一直认为,学习计算机,必须要懂算法,不仅要懂算法,还应该要“精通”算法。在我大一的时候,曾看过李开复老师的一篇著名的文章——《算法为魂》。这篇文章对我影响深远,甚至说改变了我的人生选择都不为过。因为这篇文章,我开始有意识地去接触算法,学习算法,打算法比赛,直到现在,还在关注最新的算法发展。我做这些事情,真的并不完全是功利的。当然,这些对算法的学习过程,极大的为我自己的简历贴了金,但更重要的是,我确实想搞明白,对于我所热爱的信息技术,这个被称为“魂”的东西——算法,到底是怎么回事儿。原创 2021-03-01 20:45:50 · 1187 阅读 · 0 评论 -
程序人生丨2021年最常用将会是这 8 种数据结构算法,一定要了解
本篇文章将为大家介绍一下2021年最常用将会是这 8 种数据结构算法,并向大家简单列举该数据结构的具体使用。1.链表程序员中一个流行的通用数据结构是链表。现在考虑一下此数据结构在实际应用程序中的用途。我们所有人的手机上都有音乐播放器,并且上面有歌曲。假设您的清单上有5-6首歌曲。当您为这些歌曲创建播放列表时,它将在链接列表的概念上起作用。这些歌曲一一播放,这是单链接列表的最佳示例之一。歌曲已连接,您可以从第三首歌转到第四首歌,但不能返回(单链列表的行为)。当您实现双向播放歌曲的功能时,.原创 2021-01-08 16:51:15 · 247 阅读 · 0 评论 -
学习算法应该看什么书?从入门书籍到大神专用,本文已为你打包!
一.入门系列这些书籍通过图片、打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现,但是看过以下这些书对于之后实现算法打下坚实的思维基础。很适合在闲暇之余拿出来阅读一番。1.1 《啊哈!算法》这不过是一本有趣的算法书而已。和别的算法书比较,如果硬要说它有什么特点的话,那就是你能看懂它。推荐理由:本书中涉及到的数据结构有栈、队列、链表、树、并查集、堆和图等;涉及到的算法有排序、枚举、深度和广度优先搜索、图的遍历,当然还有原创 2020-12-31 16:40:26 · 3902 阅读 · 0 评论 -
C/C++编程笔记:C语言详解“双向循环链表“的基本操作(下)
上篇文章我们讲到双向链表的创建和插入,那么这篇文章咱们继续哦讲解查找和删除吧!4.双向链表的删除双链表删除结点时,只需遍历链表找到要删除的结点,然后将该节点从表中摘除即可。例如,删除元素 2 的操作过程如图 所示:5.双向链表更改节点数据更改双链表中指定结点数据域的操作是在查找的基础上完成的。实现过程是:通过遍历找到存储有该数据元素的结点,直接更改其数据域即可。6.双向链表的查找通常,双向链表同单链表一样,都仅有一个头指针。因此,双链表查找指定元素的实现同转载 2020-12-23 21:16:00 · 152 阅读 · 0 评论 -
C/C++编程笔记:C语言详解“双向循环链表“的基本操作(上)
1.双向链表的定义单向链表特点:1.我们可以轻松的到达下一个节点, 但是回到前一个节点是很难的.2.只能从头遍历到尾或者从尾遍历到头(一般从头到尾)双向链表特点:1.每次在插入或删除某个节点时, 需要处理四个节点的引用, 而不是两个. 实现起来要困难一些2.相对于单向链表, 必然占用内存空间更大一些.3.既可以从头遍历到尾, 又可以从尾遍历到头双向链表的定义:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表转载 2020-12-22 22:01:12 · 381 阅读 · 0 评论 -
C/C++编程笔记:链接列表(链表)丨删除节点的操作源码
我们已经在以前关于单链接列表的文章中讨论了“链接列表介绍”和“链接列表插入”。让我们制定问题陈述以了解删除过程。给定一个“键”,删除该键在链表中的第一个匹配项。要从链接列表中删除节点,我们需要执行以下步骤。1)找到要删除的节点的上一个节点。2)更改上一个节点的下一个节点。3)待删除节点的可用内存。由于链表的每个节点都是使用C语言中的malloc()动态分配的,因此我们需要调用free()来释放为要删除的节点分配的内存。C ++#include <bits/...原创 2020-12-11 21:01:56 · 281 阅读 · 0 评论 -
C/C++编程笔记:链接列表(链表)丨插入节点的三种方法
在上一篇文章中,我们介绍了链接列表。我们还创建了一个具有3个节点的简单链表,并讨论了链表遍历。本文讨论的所有程序均考虑以下链表的表示形式。C ++C在这篇文章中,讨论了在链表中插入新节点的方法。可以通过三种方式添加节点:1)在链表的最前面2)在给定节点之后。3)在链接列表的末尾。在前面添加一个节点:(4个步骤)将新节点始终添加到给定链接列表的开头之前。新添加的节点成为链接列表的新头。例如,如果给定的链接列表为10-> 15-> 20-> ...原创 2020-12-10 22:09:23 · 4775 阅读 · 0 评论 -
算法与数据结构:当代程序员必备技能(算法)丨递归详解
前言递归是一种非常重要的算法思想,无论你是前端开发,还是后端开发,都需要掌握它。在日常工作中,统计文件夹大小,解析xml文件等等,都需要用到递归算法。它太基础太重要了,这也是为什么面试的时候,面试官经常让我们手写递归算法。本文呢,将跟大家一起学习递归算法~什么是递归?递归,在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。简单来说,递归表现为函数调用函数本身。在知乎看到一个比喻递归的例子,个人觉得非常形象,大家看一下:❝递归最恰当的比喻,就是查词典。我们使用的.原创 2020-11-13 22:25:10 · 286 阅读 · 0 评论 -
大学生丨毕业后想拿大厂offer?你得完整拥有这些计算机知识体系!
同样大学四年,为什么有些同学毕业就能成为大厂 Offer 收割机,各种 SP、SSP 拿到手软,有的同学明明在学校写了好多网站,项目经历满满,经历春秋招,却找到一份工作都很难。不能说后者没认真学习,或许是用力的方向不对。 话不多说,直接进正题吧。正文 人类的知识边界一直在不断的扩张,俗话说学无止境,这放在计算机领域也同样适用,计算机本身是一个人造科学,不属于自然科学。 每年,甚至每个月都不断有新的编程框架推出,学到头秃你也学不完,也没有必要去挨个学。 并且你会发现,很转载 2020-10-14 16:56:18 · 777 阅读 · 1 评论 -
计算机学生为什么要学习数据结构?学长讲出原因后,竟这么重要!
计算机专业学生为什么要学习数据结构?很多同学不理解这门课程的重要性,以至于大学学习的时候觉得太难就仅仅只用平时分和考试费勉强混过去,但是,这是这门课程的重要性被我们远远低估了!1、有没有必要学习数据结构?在计算机发展的初期,人们使用计算机的目的主要是处理数值计算问题。当我们使用计算机来解决一个具体问题时,一般需要经过下列几个步骤:首先要从该具体问题抽象出一个适当的数学模型,然后设计或选择一个解此数学模型的算法,最后编出程序进行调试、测试,直至得到最终的解答。例如,求解梁架结构中应力的数学模型的线原创 2020-10-07 15:06:08 · 2159 阅读 · 1 评论 -
C/C++数据结构:队列结构最全解析!带你零基础入门队列结构
前言上一章节针对于C语言栈结构做了解析,不清楚的可以回顾一下。本章节主要针对于C语言的基础数据结构队列做以解析。数据结构之队列队列是一种特殊的 线性表 ,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。故队列基本操作如下:(1)创建队列(2)入队(3)出队(4)判断队列是否为NULL(5)获取队头元素数据结构之队列分类原创 2020-09-30 22:11:38 · 419 阅读 · 0 评论 -
C/C++数据结构:栈结构解析,最简单解析,让你一遍就会
上一章节针对于C语言最基本的数据结构链式结构体做了解析,不清楚的可以回顾一下。本章节主要针对于C语言的基础数据结构栈做以解析。数据结构之栈栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。故栈基本操作如下:(1)创建栈原创 2020-09-29 21:58:48 · 277 阅读 · 0 评论 -
C/C++编程笔记:数据结构难点之单链表!一篇文章带你突破难点
数据结构之单链表单链表是一种链式存取的数据结构,用一组地址任意的存储单元 存放线性表中的数据元素 。链表中的数据是以结点来表示的,每个结点的构成:元素( 数据元素 的映象) + 指针 (指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。介绍:单链表就是结构体变量和结构体变量 通过指针成员连接在一起,故:单链表就是多个结构体变量。链表分类根据链表有无头结点,指针是是否双向,链表是否环状,我们把链表分为以下几种:带头结点单链表。无头结点单链表。双原创 2020-09-27 22:23:41 · 638 阅读 · 0 评论 -
编程小白真香现场!20张图带你揭开「队列」的迷雾,让你一目了然
队列的概念首先我们联想一下链表,在单链表中,我们只能对他的链表表尾进行插入,对链表的表头进行结点的删除,这样强限制性的链表,就是我们所说的队列。也就是说,队列(queue)是限定在表的一端进行插入,表的另一端进行删除的数据结构。如下图所示,假如你去买票排队,每一列队伍都有一个队尾和对头,先来的先买票,后来的后买,买好的就从对头出去,新来买票的就需要从队尾继续排队。通常,称进数据的一端为队尾,出数据的一端为队头,数据元素进队列的过程称为入队,出队列的过程称为出队。ID:技术...原创 2020-09-22 22:08:32 · 218 阅读 · 0 评论 -
C/C++编程笔记:从数据处理的角度,浅析大学课程—数据结构
对于计算机行业,说到数据处理,就不得不提到数据结构,它也是对软件开发和考研都有非常非常重要作用的一门课程。那么什么是数据结构?在这个问题之前,我们先来研究另外一个问题:计算机的作用是什么?可以这样简单的总结为:计算机的作用就是通过各种各样的程序,处理形式多样的数据。这里有两个关键字,一个是数据,一个是处理。所以我们可以进一步思考:我们要处理的数据又有哪些具体的形式?对于某种形式的数据可以进行怎样的处理?假如,我们想要开发一个图书馆的图书管理系统。联想我们提及的关键字,一个是数据,原创 2020-08-27 16:34:54 · 176 阅读 · 0 评论 -
C/C++编程笔记:快速排序的思路与优化改进(C 语言描述)
本文中的代码适用于对数组元素进行排序(以整型数据为例)。自定义的方法在排序方法之前,定义了三个不同的方法,以便于对数组元素进行比较和交换。为了适用于不同的数据类型,这里使用到了 void 指针以及指针类型的转换,也就是 C 语言中范型的概念。如果需要对不同元素类型的数组进行排序,只修改 LessArr() 方法和 Less() 方法即可。// 比较整型数组中两个元素的大小int LessArr(void *arr, int i, int j, int size){ return *(in原创 2020-08-19 21:30:54 · 153 阅读 · 0 评论 -
C/C++编程笔记:如何使用C++实现单链表?单链表基本运算实现
接上节:C/C++编程笔记:如何使用C++实现单链表?单链表第一部分。单链表上的基本运算实现(四) 求表长由于我们的代码中已经定义过一个叫做 curLength 的变量用来记录我们的表长所以我们可以直接返回,我们在定义中已经实现了,也就是这句:int size()const {return curLength;}//返回单链表的当前实际长度但是如果我们没有这样一个变量,我们想要实现这样的功能又是什么样的方法呢?template<class elemTy...原创 2020-08-11 15:15:36 · 479 阅读 · 0 评论 -
C/C++编程笔记:如何使用C++实现单链表?单链表类型定义和基本结构
如何弥补顺序表的不足之处?第一次学习线性表一定会马上接触到一种叫做顺序表(顺序存储结构),经过上一篇的分析顺序表的优缺点是很显然的,它虽然能够很快的访问读取元素,但是在解决如插入和删除等操作的时候,却需要移动大量的元素,效率较低,那么是否有一种方法可以改善或者解决这个问题呢?首先我们需要考虑,为什么顺序表中的插入删除操作会涉及到元素的移动呢?好家伙,问题就是围绕着顺序表的最大的特点出现的——顺序存储,相邻放置元素,也就是说每个元素都是根据编号一个一个挨着的,这就导致了 插入或删除后,为了仍然原创 2020-08-10 22:05:30 · 1998 阅读 · 0 评论 -
C/C++编程笔记:C语言实现--双向循环链表操作,赶紧收藏一波!
1,双向链表相当于两个单向循环链表2,双向链表的结点定义struct DULNode{ int data; struct DULNode * prior; struct DULNode * next;};typedef struct DULNode * linklist;3,单循环链表的操作都适用于双循环链表4,双循环链表的操作集合仍在头文件defs.h中5,InitList操作,双循环链表初始化操作示意图#include"defs.h"原创 2020-06-22 23:00:57 · 339 阅读 · 0 评论 -
编程技巧:如何学好程序员必知必会的数据结构?不妨试试这招!
学习编程,数据结构是你必须要掌握的基础知识,那么数据结构到底是什么呢?微信公众号:程序员书单;作者丨黄小斜其实数据结构就是用来描述计算机里存储数据的一种数学模型,因为计算机里要存储很多乱七八糟的数据,所以也需要不同的数据结构来描述。了解了基本概念之后,接下来我们再来看看,为什么我们要学习数据结构呢?在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构转载 2020-05-20 17:10:22 · 287 阅读 · 0 评论 -
C/C++编程笔记:数据结构系列——顺序表的实现,内含源码
一、原理1.定义顺序表是在计算机中以数组形式保存的。2.特点在计算机中占用连续的一段内存一旦声明,空间大小一般不变二、初始化相关操作包括:(1)结构体的定义(2)顺序表的创建(3)顺序表清空(4)判断顺序表是否为空1.结构体定义即定一个满足顺序表定义的结构体,其中包含 数组、存储长度、总长度。2.初始化对顺序表进行初始化,包括分配自定...原创 2020-04-07 23:41:40 · 394 阅读 · 0 评论 -
C/C++编程笔记:BFS 广度优先搜索基本思想,图算法就是这么简单
广度优先搜索BFS(Breadth First Search)也称为宽度优先搜索,它是一种先生成的结点先扩展的策略。在广度优先搜索算法中,解答树上结点的扩展是按它们在树中的层次进行的。首先生成第一层结点,同时检查目标结点是否在所生成的结点中,如果不在,则将所有的第一层结点逐一扩展,得到第二层结点,并检查第二层结点是否包含目标结点,……,对层次为n+1的任一结点进...原创 2020-02-29 15:15:32 · 483 阅读 · 0 评论