- 博客(223)
- 收藏
- 关注
原创 data.biancheng.net数据结构网站
网站上有一整套的数据结构和算法教程,是 C 语言版本的,整套教程通俗易懂,不学院派,内容全面详尽,提供了完整、可运行的 C 语言程序,非常适合有 C 语言基础、对数据结构感兴趣的读者。感兴趣的小伙伴可以访问。
2024-01-17 17:35:14 423
原创 数据结构和算法教程(C语言版)
数据结构研究的是数据之间的关系,再进一步说,它研究的是多份数据之间的分布、排列和勾连的关系,以及在此基础之上如何进行高效的增删改查操作。数据结构是计算机专业的基础课程,也是所有程序员的内功心法;不懂数据结构就是写代码的农民,了解数据结构才能成为行业专家。六年创作,三次迭代,千般打磨,成就了现在这套精品的数据结构和算法教程。为了降低阅读门槛,本教程所有代码都基于C语言编写。
2023-11-04 14:20:52 1025
原创 一文彻底搞懂数据结构(写出初学者的干货)
数据结构是计算机专业的基础课程,是所有程序员的必修课。如果把编程语言比作程序员的剑法招式,那么数据结构就是程序员的内功心法。不懂数据结构就是写代码的农民,了解数据结构才能成为行业专家。这些问题的答案,在我原创的这篇文章中都能找到。在这篇文章中,我不会深入讲解数据结构中的某个知识点,而是要揭开数据结构的面纱,让大家从整体上对数据结构有一个清晰的认知,致力于帮助读者快速入门数据结构。数据结构与算法教程,数据结构C语言版教程!
2024-08-19 13:36:13 878
原创 C语言项目实践汇总(初学者必备)
初学者往往有这样的困惑:教程已经阅读过了,其中的知识点也都理解了,但是真正编写代码的时候却感觉无从下手,甚至连数组排序、文件复制、百钱买白鸡这样的小程序都不能完成。C语言是我学的第一门编程语言,如果你没有编程基础,想快速入门 C 语言,可以看一套我之前看过的 C 语言入门教程,非常适合初学者入门。编程是一门不断实践的技术,读者不但要掌握 C语言语法,还要自己动手去开发项目,将知识运用到实际中。对于初学者而言,了解并实践一些基础的 C语言项目,是提升编程技能和理解 C语言特性的有效途径。
2024-07-12 21:04:44 365
原创 C语言基础知识点大全(含思维导图)
对初学者来说,学习C语言的成本小,时间短,我总结的 C 语言入门要掌握的所有知识点,结合这个思维导图,可以快速掌握基本的编程技能。在 2023 年 10 月份发布的世界编程语言排行榜中,C语言拿了一个第二名的好成绩,占据了 12.08% 的市场份额。C语言是计算机产业的核心语言,也是计算机专业的基础课程,操作系统、硬件驱动、关键组件、数据库等都离不开C语言;注意,学习 C 语言,一个多月的时间足够了,学完 C 语言之后,赶快去学习其他的技术,不建议长期停留在 C 语言的学习阶段。do while 循环。
2024-07-08 21:00:44 1145
原创 C语言是干嘛的,我列举了8种经典案例
虽然C语言的开发场景看起来很多,但是如果总结一下的话,无非就是:底层/系统开发 +关键组件/模块的开发 + 贴近硬件的开发,这些开发场景非常关注运行效率,或者响应时间,或者硬件资源。C语言基础教程http://www.54benniao.com/c/?pid=8。
2024-06-12 22:33:56 761
原创 C语言是什么,花十分钟彻底搞清楚!
对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员。C语言发布于 1972 年,今年是 2023 年,它已经 50 多岁了,是一个不折不扣的“大叔”或者“大爷”。但是呢,现在的 C 语言依然非常流行,每一个科班出身的程序员都必学C语言。在 2023 年 10 月份发布的世界编程语言排行榜中,C 语言拿了一个第二名的好成绩,占据了 12.08% 的市场份额。这些底层知识决定了你的发展高度,也决定了你的职业生涯。如果你希望成为出类拔萃的人才,而不仅仅是码农,这么这些知识就是不可逾越的。
2024-06-11 20:41:14 1079
原创 C语言编译器大全(含下载和安装教程)
本篇文章搜集了常用的几乎所有C语言编译器(编程软件),同时附带下载地址、详细的安装教程和使用教程。我们还对比了不同C语言编译器(C语言编程软件)的优缺点,让初学者知道该如何选择。本节给大家介绍的 C 语言编译器覆盖全平台,包括 Windows、Linux 和 Mac OS,不管你使用什么电脑,都能编写C语言代码。Windows 下的C语言编译器众多,多如牛毛,有的功能强大,但是安装和使用都比较复杂,有的小巧灵活,但是功能较弱;这里我们收集了八款常用的编译器,供大家下载。
2024-06-11 19:28:26 13654
原创 C语言难学吗,多久能学会?(小白必读)
对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员。这些底层知识决定了你的发展高度,也决定了你的职业生涯。如果你希望成为出类拔萃的人才,而不仅仅是码农,这么这些知识就是不可逾越的。也只有学习C语言,才能更好地了解它们。有了足够的基础,以后学习其他语言,会触类旁通,很快上手,7 天了解一门新语言不是神话。C语言难学吗?每个人的逻辑思维能力不同,兴趣点不同,总有一部分人觉得容易,一部分人觉得吃力。对于你来说,我也不知道它难不难,我只知道,只要你想学,肯定能学会。
2024-06-02 20:55:12 835
原创 C语言到底能干啥,学C语言有什么用?(小白必读)
如果你只学 C 语言,那很尴尬,只能编写一些没有界面的控制台程序,其他啥也干不了。C语言仅仅是一个工具,它的标准库也很简单,只提供了最基本的功能,如果希望开发出实用的程序,必须再学习其他方面的知识。就目前而言,C语言可以参与以下几种类型的开发。C语言基础教程(适合初学者)
2024-05-31 21:37:37 1071
原创 十分钟彻底了解C语言(小白必读)
对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员。文章篇幅较长,大家一定要耐心看完。读完本文,能彻底搞清楚以下几个问题:C语言究竟是一门怎样的语言?C语言到底能做什么?C语言能找什么工作?能拿多少钱?程序员必须要学习C语言吗?学编程难吗?多久能入门?C语言和C++到底是什么关系?
2024-05-30 21:17:27 751
原创 链表的增删查改完全攻略(C语言版)
以上内容详细介绍了对链表中数据元素做"增删查改"的实现过程及 C 语言代码,最后给大家一段完整的代码,实现对有头结点链表的“增删查改”,大家可以去我的个人网站获取。单链表的基本操作(C语言详解)t=N7T8t=N7T8数据结构与算法教程,数据结构C语言版教程!
2024-05-17 20:14:47 770
转载 算法是什么,算法简介(小白必读)
算法(Algorism)一词最初出现在 12 世纪,是用于表示十进制算术运算的规则。18 世纪,算法 Algorism 演变为 Algorithm,算法概念有了更广的含义。任何定义明确的计算步骤都可称为算法,或者说算法是合乎逻辑、简捷的一系列步骤。现在算法通常指可以用计算机来解决某一类问题的程序或步骤。
2024-03-25 20:46:09 53
转载 数据结构是什么
从具体问题抽象出一个适当的数学模型;设计或选择一个解此数学模型的算法;最后编写出程序进行调试、测试,直至得到最终的解答。由于早期计算机所涉及的运算对象是简单的整型、实型或布尔类型数据,程序设计者的精力主要集中于程序设计的技巧上,无须重视数据结构。随着计算机应用领域的扩大和软、硬件技术的发展,非数值计算问题显得越来越重要。
2024-03-22 21:51:49 35
原创 数据结构与算法学习攻略(领思维导图)
数据结构和算法是两个独立的学科,数据结构研究的是数据的存储问题,而算法研究是的解决问题的方法(思路)。解决实际问题,既需要用到数据结构的知识,也需要用到算法知识,数据结构和算法经常放在一起讲解。最后给大家推荐一套我原创的数据结构和算法教程(网址是 xiexuewu.github.io),教程在讲解数据结构的过程中,也会讲解一些关联紧密的算法,并提供了完整、可运行的 C 语言程序,让每位读者都能学有所用,用有所成。
2024-03-06 21:00:35 398
原创 数据结构知识点总结(超级详细)
逻辑结构描述的数据之间的关系;物理结构描述的是数据的内存中真实的存储状态。存储逻辑关系为 “一对一” 的数据,存取数据必须遵循 “先进后出” 的原则。存储逻辑关系为“一对一”的数据,存取数据必须遵循 “先进先出” 的原则。如果数据中存储大量无效的元素,可以采用压缩存储的方式。算法研究的是解决问题的方法。只对查找表做查找和读取元素的操作,不改变查找表的存储结构。二叉树的先序遍历算法(递归和非递归)二叉树的中序遍历算法(递归和非递归)二叉树的后序遍历算法(递归和非递归)图的十字链表存储结构(C语言实现)
2024-03-01 15:27:27 2027
原创 数据结构知识点汇总(超级详细)
数据结构究竟有哪些知识点需要学习呢?为了方便大家更直观地看到所有知识点,我制作了一张数据结构的思维导图,罗列了几乎数据结构所有的知识点。学习数据结构,就是学习数据的各种存储方案,包括线性表、栈和队列、串、数组和广义表、树和图。每个知识点都提供了对应的讲解文章,大家哪个知识点不懂,直接找相应的文章去看。
2024-03-01 14:10:42 536
原创 数据结构难学吗,有哪些好的学习资料?
语言,掌握熟练了,就可以开始学习数据结构和算法了。很多人觉得数据结构难学,是因为没有找到合适的书籍或者视频。客观地讲,很多书籍和视频都不适合初学者,它们讲知识喜欢拽学术名词,语言佶屈聱牙,初学者拿搬砖敲自己的脑袋都理解不了,它们更适合有一定数据结构基础的人。大部分人学不会编程,学不会数据结构,问题的关键出在选用的教程上。换句话说,学不会数据结构,往往不是我们有多笨,而是教材太垃圾,没有把知识讲明白。接下来,给大家推荐几套适合初学者的数据结构教程,既有文字教程,也有视频教程。
2024-02-21 20:33:48 1035
原创 怎么才能学会数据结构?
初学者学习数据结构,最紧要的是熟练掌握一门编程语言,比如 C/C++ 语言。其次,很多人觉得数据结构难学,是因为没有找到合适的书籍或者视频。客观地讲,很多书籍和视频都不适合初学者,它们讲知识喜欢拽学术名词,语言佶屈聱牙,初学者拿搬砖敲自己的脑袋都理解不了,它们更适合有一定数据结构基础的人。大部分人学不会编程,学不会数据结构,问题的关键都出在选用的教程上。接下来,给大家推荐几套适合初学者的数据结构教程,既有文字教程,也有视频教程。
2024-02-20 20:19:22 897
原创 教小白玩转链表(长篇神文)
如果你掌握了 C 语言,正在学习数据结构中的线性表,那么这篇文章非常适合你,认真看完这篇文章,你就能玩转线性表。在这篇文章里,我将讲述以下几个问题: 线性表是什么 顺序表是什么 顺序表的基本操作 链表是什么 链表的基本操作 静态链表是什么 静态链表的基本操作 双向链表是什么 双向链表基本操作 循环链表 双向循环链表是什么 结合自己近 8 年对数据结构的研究,我原创了一整套数据结构和算法教程,它通
2024-01-25 21:20:57 886
原创 花10分钟彻底弄懂数据结构(小白必读)
如果你已经掌握了一门编程语言,马上要开始学习数据结构,或者已经学了一部分数据结构,但学得云里雾里,那么推荐你看完这篇文章,它能加深你对数据结构的认知,帮助你快速入门数据结构。接下来,我就结合这几个问题,给大家展开讲讲数据结构。结合自己近 8 年对数据结构的研究,我原创了一整套数据结构和算法教程,它通俗易懂、不学院派,没有晦涩难懂的学术用语,教程提供了完整、可运行的 C 语言程序,非常适合有 C 语言基础、想系统学习数据结构和算法的人。数据结构和算法教程(C语言版)
2024-01-25 20:01:59 1447 1
原创 动态规划算法
动态规划算法解决问题的过程和分治算法类似,也是先将问题拆分成多个简单的小问题,通过逐一解决这些小问题找到整个问题的答案。不同之处在于,分治算法拆分出的小问题之间是相互独立的,而动态规划算法拆分出的小问题之间相互关联,例如要想解决问题 A,必须先解决问题 B 和 C。》一节中,给大家举过一个例子,假设有 1、7、10 这 3 种面值的纸币,每种纸币使用的数量不限,要求用尽可能少的纸币拼凑出的总面值为 15。
2024-01-10 10:49:13 910
原创 稳定排序算法有哪些?
相信您已经掌握了很多种排序算法,比如冒泡排序、插入排序、希尔排序、选择排序等。这些排序算法中,有些是 "稳定" 的,有些是 "不稳定" 的。给定的待排序序列中,经常会包含相同的元素,例如:3 142此序列中包含两个元素 2,为了区分它们,我们分别称它们为 "红 2" 和 "绿 2"。评价一个排序算法是否稳定,是指该算法完成排序的同时,是否会改变序列中相同元素的相对位置。例如,上面序列中红 2 和绿 2 的相对位置是:红 2 位于绿 2 的左侧,或者说绿 2 位于红 2 的右侧。
2024-01-10 10:11:50 460
原创 内部排序算法的总结
所有的排序算法中单就平均时间性能上分析,快速排序算法最佳,其运行所需的时间最短,但其在最坏的情况下的时间性能不如堆排序和归并排序;本章所介绍的大多数算法都是在顺序存储结构的基础上实现的,基于顺序存储结构的局限性,排序算法在排序过程都需要进行大量记录的移动,影响算法本身的效率。通过比较所有的排序算法,没有哪一种是绝对最优的,在使用时需要根据不同的实际情况适当选择合适的排序算法,甚至可以考虑将多种排序算法结合起来使用。当前阅读的是整套数据结构和算法教程中的一节内容,想系统学习数据结构和算法的读者,可以前往。
2024-01-04 17:14:55 373
原创 基数排序算法详解(C语言实现)
基数排序不同于之前所介绍的各类排序,前边介绍到的排序方法或多或少的是通过使用比较和移动记录来实现排序,而基数排序的实现不需要进行对关键字的比较,只需要对关键字进行“分配”与“收集”两种操作即可完成。例如对无序表进行基数排序,由于每个关键字都是整数数值,且其中的最大值由个位、十位和百位构成,每个数位上的数字从 0 到 9,首先将各个关键字按照其个位数字的不同进行分配分配表如下图所示:。在该序列表的基础上,再按照各关键字的十位对各关键字进行分配,得到的分配表如下图所示:。
2024-01-04 17:14:05 404
原创 归并排序算法(C语言实现)
归并排序算法的时间复杂度为O(nlogn)。该算法相比于堆排序和快速排序,其主要的优点是:当记录表中含有值相同的记录时,排序前和排序后在表中的相对位置不会改变。例如,在记录表中记录 a 在记录 b 的前面(记录 a 和 b 的关键字的值相等),使用归并排序之后记录 a 还在记录 b 的前面。这就体现出了该排序算法的稳定性。而堆排序和快速排序都是不稳定的。当前阅读的是整套数据结构和算法教程中的一节内容,想系统学习数据结构和算法的读者,可以前往教程目录页面系统的学习,加我 q(834937624。
2024-01-04 17:12:46 334
原创 快速排序算法(C语言实现)
快速排序算法的时间复杂度为O(nlogn),是所有时间复杂度相同的排序方法中性能最好的排序算法。当前阅读的是整套数据结构和算法教程中的一节内容,想系统学习数据结构和算法的读者,可以前往教程目录页面系统的学习,加我 q(834937624)获取教程的完整 PDF 电子版。
2024-01-04 17:11:28 856
原创 希尔排序算法(C语言实现)
在使用直接插入排序算法时,如果表中的记录只有个别的是无序的,多数保持有序,这种情况下算法的效率也会比较高;希尔排序的过程中,对于分割的每个子表,其各自包含的记录在原表中并不是相互挨着的,而是相互之间相隔着某个固定的常数。通过此种方式,对于关键字的值较小的记录,其前移的过程不是一步一步的,而是跳跃性的前移,并且在最后一次对整表进行插入排序时减少了比较和排序的次数。希尔排序,又称“缩小增量排序”,也是插入排序的一种,但是同前面几种排序算法比较来看,希尔排序在时间效率上有很大的改进。
2024-01-04 17:09:23 375
原创 表插入排序算法(C语言实现)
前面章节中所介绍到的三种插入排序算法,其基本结构都采用数组的形式进行存储,因而无法避免排序过程中产生的数据移动的问题。如果想要从根本上解决只能改变数据的存储结构,改用链表存储。表插入排序,即使用链表的存储结构对数据进行插入排序。在对记录按照其关键字进行排序的过程中,不需要移动记录的存储位置,只需要更改结点间指针的指向。在使用数组结构表示的链表中,设定数组下标为 0 的结点作为链表的表头结点,并令其关键字取最大整数。
2024-01-04 17:07:25 753
原创 2路插入排序算法详解(C语言实现)
具体实现思路为:另外设置一个同存储记录的数组大小相同的数组 d,将无序表中第一个记录添加进 d[0] 的位置上,然后从无序表中第二个记录开始,同 d[0] 作比较:如果该值比 d[0] 大,则添加到其右侧;2-路插入排序算法是在折半插入排序的基础上对其进行改进,减少其在排序过程中移动记录的次数从而提高效率。2-路插入排序相比于折半插入排序,只是减少了移动记录的次数,没有根本上避免,所以其时间复杂度仍为。当前阅读的是整套数据结构和算法教程中的一节内容,想系统学习数据结构和算法的读者,可以前往。
2024-01-04 17:05:06 356
原创 哈希查找算法(C语言实现)
上一节介绍了有关哈希表及其构造过程的相关知识,本节将介绍如何利用哈希表实现查找操作。在哈希表中进行查找的操作同哈希表的构建过程类似,其具体实现思路为:对于给定的关键字 K,将其带入哈希函数中,求得与该关键字对应的数据的哈希地址,如果该地址中没有数据,则证明该查找表中没有存储该数据,查找失败:如果哈希地址中有数据,就需要做进一步的证明(排除冲突的影响),找到该数据对应的关键字同 K 进行比对,如果相等,则查找成功;
2024-01-04 17:00:40 844
原创 键树查找法(双链树和字典树)C语言实现
双链树和字典树是键树的两种表示方法,各有各的特点,具体使用哪种方式表示键树,需要根据实际情况而定。例如,若键树中结点的孩子结点较多,则使用字典树较双链树更为合适。
2024-01-04 16:59:32 870
原创 B+树是什么
有 n 棵子树的结点中含有 n 个关键字;在上一节中,在 B-树中的每个结点关键字个数 n 的取值范围为⌈m/2⌉≤n≤m。所有的叶子结点中包含了全部关键字的信息,及指向含这些关键字记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接。所有的非终端结点(非叶子结点)可以看成是索引部分,结点中仅含有其子树(根结点)中的最大(或最小)关键字。例如,图 1 中所示的就是一棵深度为 4 的 3 阶 B+树:图 1 3阶B+树。
2024-01-04 16:57:25 849
原创 B-树是什么
树中每个结点至多有 m 棵子树;若根结点不是叶子结点,则至少有两棵子树;除根之外的所有非终端结点至少有 ⌈m/2⌉ 棵子树;所有的非终端结点中包含下列信息数据:(n,A0,K1,A1,K2,A2,…,Kn,An);。Ki (i 从 1 到 n)为关键字,且 Ki < Ki+1;Ai 代表指向子树根结点的指针,且指针 Ai-1 所指的子树中所有结点的关键字都小于 Ki,An 所指子树中所有的结点的关键字都大于 Kn。图 1 结点结构。
2024-01-04 16:54:35 789
原创 红黑树(C语言实现)
本节介绍的红黑树,虽隶属于二叉查找树,但是二叉查找树的时间复杂度会受到其树深度的影响,而红黑树可以保证在最坏情况下的时间复杂度仍为O(lgn)。当数据量多到一定程度时,使用红黑树比二叉查找树的效率要高。同平衡二叉树相比较,红黑树没有像平衡二叉树对平衡性要求的那么苛刻,虽然两者的时间复杂度相同,但是红黑树在实际测算中的速度要更胜一筹!提示:平衡二叉树的时间复杂度是O(logn),红黑树的时间复杂度为O(lgn)
2024-01-04 16:33:28 811
原创 静态树表查找算法(C语言实现)
静态树表查找算法只适用于有序查找表,首先将有序表转换成一棵静态树表(二叉树),后续的查找操作都在静态树表上完成。当有序表中的元素查找概率不同时,可以使用二分查找算法,但静态树表查找算法的性能更高。当前阅读的是整套数据结构和算法教程中的一节内容,想系统学习数据结构和算法的读者,可以前往教程目录页面系统的学习,加我 q(834937624)获取教程的完整 PDF 电子版。
2024-01-04 16:28:13 862
原创 分块查找算法(C语言实现)
分块查找又称索引顺序查找,是一种在顺序查找算法基础上改进得到的算法。在索引顺序结构表示的静态查找表中,可以借助分块查找算法在表中查找特定的元素。索引顺序结构是一种顺序表和索引表的组合存储结构,例如:图 1 索引顺序结构数据全部存储在顺序表中,存储时遵循“分块有序”的规则。图 1 中的整个顺序表被分成了 3 块(用不同的颜色区分),第二块的所有元素都比第一块的大,同样第三块的所有元素都比第二块的大。根据各个块内的元素最大值,所有块有序存放在顺序表中,这样的存储方式就称为分块有序。
2024-01-03 20:00:55 1183
双向链表实现贪吃蛇游戏(C语言版)
2023-12-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人