数据结构和算法教程(C语言版)

六年创作,三次迭代,千般打磨,成就了现在这套精品的数据结构和算法教程。

  • 博客(291)
  • 收藏
  • 关注

原创 C语言编程软件汇总与推荐(15款,新手必看)

之所以列出这么多C语言编程软件,主要是让大家有所了解,实际开发中熟悉一两款即可(根据“使用建议”中推荐的来选择),千万不要挨着尝试,太浪费时间了。

2025-01-24 18:22:44 20351

原创 十分钟彻底了解C语言(小白必读)

对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员。文章篇幅较长,大家一定要耐心看完。读完本文,能彻底搞清楚以下几个问题:C语言究竟是一门怎样的语言?C语言到底能做什么?C语言能找什么工作?能拿多少钱?程序员必须要学习C语言吗?学编程难吗?多久能入门?C语言和C++到底是什么关系?

2025-01-15 20:21:16 1977

原创 精品C语言教程推荐(超级肝,新手必备)

对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解 C 的程序员。C语言是计算机产业的核心语言,也是计算机专业的基础课程,操作系统、硬件驱动、关键组件、数据库等都离不开C语言,不学习C语言,就不能了解计算机底层,就很难成为行业专家。C语言除了能让你了解编程的相关概念,带你走进编程的大门,还能让你明白程序的运行原理,比如,计算机的各个部件是如何交互的,程序在内存中是一种怎样的状态,操作系统和用户程序之间有着怎样的“爱恨情仇”,这些底层知识决定了你的发展高度,也决定了你的职业生涯。

2024-09-30 21:39:31 1509

原创 VS2022下载和安装和使用教程(新手必看)

使用 VS2022 运行 C 语言程序,要经历“新建项目 -> 新建源文件 -> 编写 C 语言程序”共 3 个过程。跟随本文操作 VS2022,你已经越过了第一道障碍,学会了如何编写代码,如何将代码生成可执行程序,这是一个完整的体验。t=O83AC语言入门教程(非常详细)C语言是一门面向过程的编译型语言,运行速度极快,仅次于汇编语言。C语言是计算机产业的核心语言,操作系统、硬件驱动、关键组件、数据库等都离不开C语言;不学习C语言,就不能了解计算机底层。

2024-09-21 20:40:53 1684

原创 VC6.0(VC++6.0)下载安装和使用教程(超级肝,新手必看)

VC6.0可以在 XP 下完美运行,不用进行额外的设置。在Win7和Win10下,设置兼容模式才可以运行。Win8相对麻烦一些,要先修改 MSDEV.EXE 的名字,再设置兼容模式。通过以上的设置如果还不能使用,那么请更换其它编译器,或者安装 Windows XP 吧,实在是没办法了。VC 6.0 太老了,在高版本的 Windows 系统中有时候就是死活都用不了,谁也没辙,微软早就不维护它了,也不再对它进行升级或者打补丁了,只能说明你的教学资料或者教学体制太落后了。

2024-09-21 20:18:28 10365 2

原创 Code::Blocks下载安装和使用教程(含汉化教程,超级肝)

Code::Blocks 是一款免费开源的 C/C++ IDE,支持 GCC、MSVC++ 等多种编译器,还可以导入 Dev-C++ 的项目。Code::Blocks 的优点是:跨平台,在Linux、Mac、Windows 上都可以运行,且自身体积小,安装非常方便。安装 Code::Blocks 跟安装普通软件一样,完全的傻瓜式操作,远没有安装 VS 那么复杂。

2024-09-20 20:23:58 4055

原创 Dev C++下载安装和使用教程(新手必看)

现在,你就可以将 hello.exe 分享给你的朋友了,告诉他们这是你编写的第一个C语言程序。虽然这个程序非常简单,但是你已经越过了第一道障碍,学会了如何编写代码,如何将代码生成可执行程序,这是一个完整的体验。在本教程的基础部分,教大家编写的程序都是这样的“黑窗口”,与我们平时使用的软件不同,它们没有漂亮的界面,没有复杂的功能,只能看到一些文字,这就是控制台程序(Console Application),它与DOS非常相似,早期的计算机程序都是这样的。t=O83A。

2024-09-20 19:28:59 19249 3

原创 ASCII码一览表,ASCII码对照表(新手必备)

ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是一套基于拉丁字母的字符编码,共收录了 128 个字符,用一个字节就可以存储,它等同于国际标准 ISO/IEC 646。ASCII 编码于 1967 年第一次发布,最后一次更新是在 1986 年,迄今为止共收录了 128 个字符,包含了基本的拉丁字母(英文字母)、阿拉伯数字(也就是 1234567890)、标点符号(,.!

2024-09-14 20:10:38 19261

原创 C语言是干嘛的,我列举了8种经典案例

虽然C语言的开发场景看起来很多,但是如果总结一下的话,无非就是:底层/系统开发 +关键组件/模块的开发 + 贴近硬件的开发,这些开发场景非常关注运行效率,或者响应时间,或者硬件资源。C语言基础教程​http://​www.54benniao.com/c/?pid=8​。

2024-06-12 22:33:56 1139

原创 C语言是什么,花十分钟彻底搞清楚!

对于大部分程序员,C语言是学习编程的第一门语言,很少有不了解C的程序员。C语言发布于 1972 年,今年是 2023 年,它已经 50 多岁了,是一个不折不扣的“大叔”或者“大爷”。但是呢,现在的 C 语言依然非常流行,每一个科班出身的程序员都必学C语言。在 2023 年 10 月份发布的世界编程语言排行榜中,C 语言拿了一个第二名的好成绩,占据了 12.08% 的市场份额。这些底层知识决定了你的发展高度,也决定了你的职业生涯。如果你希望成为出类拔萃的人才,而不仅仅是码农,这么这些知识就是不可逾越的。

2024-06-11 20:41:14 2935

原创 C语言编译器大全(含下载和安装教程)

本篇文章搜集了常用的几乎所有C语言编译器(编程软件),同时附带下载地址、详细的安装教程和使用教程。我们还对比了不同C语言编译器(C语言编程软件)的优缺点,让初学者知道该如何选择。本节给大家介绍的 C 语言编译器覆盖全平台,包括 Windows、Linux 和 Mac OS,不管你使用什么电脑,都能编写C语言代码。Windows 下的C语言编译器众多,多如牛毛,有的功能强大,但是安装和使用都比较复杂,有的小巧灵活,但是功能较弱;这里我们收集了八款常用的编译器,供大家下载。

2024-06-11 19:28:26 86537 3

原创 data.biancheng.net数据结构网站

网站上有一整套的数据结构和算法教程,是 C 语言版本的,整套教程通俗易懂,不学院派,内容全面详尽,提供了完整、可运行的 C 语言程序,非常适合有 C 语言基础、对数据结构感兴趣的读者。感兴趣的小伙伴可以访问。

2024-01-17 17:35:14 679

原创 数据结构和算法教程(C语言版)

数据结构研究的是数据之间的关系,再进一步说,它研究的是多份数据之间的分布、排列和勾连的关系,以及在此基础之上如何进行高效的增删改查操作。数据结构是计算机专业的基础课程,也是所有程序员的内功心法;不懂数据结构就是写代码的农民,了解数据结构才能成为行业专家。六年创作,三次迭代,千般打磨,成就了现在这套精品的数据结构和算法教程。为了降低阅读门槛,本教程所有代码都基于C语言编写。

2023-11-04 14:20:52 1559

原创 数据结构QQ交流群:937184979

数据结构QQ交流群:937184979,快速提升数据结构水平!!

2019-11-18 13:04:44 796

原创 scrcpy下载和安装教程(附安装包)

scrcpy 读作 “screen copy”,是一款能把 Android 手机屏幕“搬”到电脑并直接用键鼠操控的轻量级工具。scrcpy 不需要在手机上装任何客户端,也不用 root,只要一根数据线或同一局域网的无线连接,就能在 Windows、macOS、Linux 上实现低延迟的投屏与反控,新手小白也能三分钟玩起来。scrcpy 完全免费、无广告、无内购,社区活跃,平均每两个月发布一次更新。scrcpy 把“手机外接显示器”这件事做到了极致简单,体积小、延迟低、零入侵、全平台。

2025-09-28 20:47:48 309

原创 CrystalDiskMark下载安装教程(附安装包,适合新手)

CrystalDiskMark 常被玩家简称为“CDM”,是一款专门给硬盘、U盘、存储卡“测速”的免费小工具。CrystalDiskMark 通过模拟读写大文件、小文件、随机文件等不同场景,把存储设备的“连续读取/写入速度”“4K随机读写速度”量化成 MB/s 或 IOPS,让你像看体温计一样,一眼就知道硬盘是“超跑”还是“老牛”,新手也能两分钟看懂。

2025-09-28 20:44:47 132

原创 CrystalDiskInfo下载使用教程(附安装包)

CrystalDiskInfo 是一款专门帮硬盘“量体温、看报告”的免费小工具,名字里的 Crystal 代表“透明”,Disk 代表“磁盘”,Info 就是“信息”。CrystalDiskInfo 能把机械硬盘、固态硬盘、U 盘甚至部分移动盒子的健康状态、温度、通电时长、坏道数量等关键指标,用红绿灯和数字直观展示,让电脑小白也能一眼判断“硬盘是不是快挂了”。

2025-09-27 18:44:25 163

原创 KeePass下载安装汉化教程(附安装包,图文并茂)

KeePass 是一款专门替你“记密码”的免费小工具,名字里 Keep 代表“保管”,Pass 代表“密码”。KeePass 可以把 QQ、微信、网银、Steam、GitHub 等所有网站的账号密码统统锁进一个加密文件,只要记住“一把”主密码,就能随时查看、复制或自动输入,再也不用贴便利签。KeePass 的加密体系采用当前公认的 AES-256 和 Twofish 双算法,主密码之外还能叠加 U 盘里的密钥文件或 Windows 账户证书,实现“双因素”开锁。

2025-09-27 18:41:09 869

原创 Tomcat下载和安装教程(图文并茂,适合新手)

市场上有很多 Web 容器,著名的有 Tomcat、Jetty、JBoss、WebLogic 等,初学者最常使用的是 Tomcat。Tomcat 是 Java 官方推出一款免费开源的 Web 容器,它占用资源少,扩展性好,运行稳定,支持负载均衡,并且易于学习和使用,所以成为最受欢迎的 Tomcat 容器。本文将为您讲解 Tomcat 的下载和安装。

2025-09-15 22:52:10 1131

原创 Maven下载安装图文教程(全网最详细,适合新手)

Maven 是一款基于 Java 平台的项目管理和整合工具,它将项目的开发和管理过程抽象成一个项目对象模型(POM)。开发人员只需要做一些简单的配置,Maven 就可以自动完成项目的编译、测试、打包、发布以及部署等工作。Maven 是基于 Java 的项目管理工具,因此最基本的要求是在计算机上安装 JDK。

2025-09-13 21:35:25 933

原创 Eclipse下载安装图文教程(非常详细,适合新手)

学习 Java,必须选择一个功能强大、使用简单,能够辅助程序设计的 IDE。Eclipse 是一款使用 Java 语言开发的、免费开源的、可扩展的集成开发环境(IDE)。Eclipse 最初由 IBM 公司开发,后来被捐赠献给国际开源社区,现在由非营利软件供应商联盟 Eclipse 基金会(Eclipse Foundation)管理。Eclipse 是时下最流行的 Java 开发平台之一,主要用来进行 Java 程序的开发。

2025-09-10 22:09:44 1170

原创 C语言socket编程实现文件传输功能(源码+解析)

注意 server.cpp 第42行代码,recv() 并没有接收到 client 端的数据,当 client 端调用 closesocket() 后,server 端会收到FIN包,recv() 就会返回,后面的代码继续执行。FIN 包表示数据传输完毕,计算机收到 FIN 包后就知道对方不会再向自己传输数据,当调用 read()/recv() 函数时,如果缓冲区中没有数据,就会返回 0,表示读到了”socket文件的末尾“。recv() 返回 0 的唯一时机就是收到FIN包时。请看下面完整的代码。

2025-07-15 19:43:07 544

原创 图解TCP四次握手断开连接(新手必看)

建立连接非常重要,它是数据正确传输的前提;断开连接同样重要,它让计算机释放不再使用的资源。如果连接不能正常断开,不仅会造成数据传输错误,还会导致套接字不能关闭,持续占用资源,如果并发量高,服务器压力堪忧。下图演示了客户端主动断开连接的场景:建立连接后,客户端和服务器都处于ESTABLISED状态。这时,客户端发起断开连接的请求:1) 客户端调用 close() 函数后,向服务器发送 FIN 数据包,进入FIN_WAIT_1状态。FIN 是 Finish 的缩写,表示完成任务需要断开连接。

2025-07-15 19:33:48 497

原创 哈希查找算法C语言详解(完整源码+解析)

哈希查找算法又称散列查找算法,是一种借助哈希表(散列表)查找目标元素的方法,查找效率最高时的时间复杂度为 O(1)。哈希查找算法适用于大多数场景,既支持在有序序列中查找目标元素,也支持在无序序列中查找目标元素。讲解哈希查找算法之前,我们首先要搞清楚什么是哈希表。

2025-07-06 21:34:28 1012

原创 C语言二分查找(折半查找)详解(源码+解析)

二分查找又称折半查找、二分搜索、折半搜索等,是在分治算法基础上设计出来的查找算法,对应的时间复杂度为O(logn)。二分查找算法仅适用于有序序列,它只能用在升序序列或者降序序列中查找目标元素。

2025-07-06 21:22:51 712

原创 C语言main函数中的argc和argv参数有什么用?

在C语言中,main 函数是程序的入口点,它是程序开始执行的地方。例如,我们可以根据命令行参数来改变程序的行为,读取输入文件的名称,或者设置程序的配置选项。需要注意的是,argv[0] 通常是程序本身的名称,而实际的命令行参数从 argv[1] 开始。在这个带参数的 main 函数中,argc 和 argv 是两个非常重要的参数,它们允许程序接收和处理命令行参数。总的来说,main 函数中 argc 和 argv 参数用于在程序启动时,接收来自命令行的参数。这种形式适用于不需要处理命令行参数的简单程序。

2025-06-24 12:29:26 403

原创 C语言NULL和0的区别(非常详细)

另一方面,使用 0 来表示空指针,虽然在技术上是正确的,但可能会引起混淆,特别是在复杂的表达式中。相比之下,0 是一个整数常量,它在C语言中有多重含义:可以表示数值零,也可以在某些上下文中表示假(false)的布尔值。当用于指针时,0 会被隐式转换为空指针常量;在这种情况下,使用 NULL 而不是 0 来表示空指针就显得尤为重要,因为它可以被定义为一个不同于 0 的值,以避免与有效的内存地址产生冲突。NULL 是一个宏定义,通常在标准头文件中定义,被用来表示空指针,即不指向任何有效的内存地址的指针。

2025-06-24 12:20:51 718

原创 C语言变量作用域(3种)

在C语言中,变量的作用域是指变量在程序中可以被访问和使用的范围,它决定了变量的可见性和生命周期。C语言中主要有三种变量作用域:局部作用域、全局作用域和块作用域。接下来,让我们深入探讨每种作用域的特点和使用场景。

2025-06-20 13:05:50 535

原创 C语言变量初始化和赋值的区别(非常详细)

在C语言中,变量初始化和赋值是两个相关、但不完全相同的概念,它们都涉及给变量赋予一个值,但发生的时机和使用的方式有所不同。变量初始化是在变量声明的同时给它赋予一个初始值,这个过程发生在变量的生命周期开始时。初始化可以确保变量在首次使用时已经有一个明确的、可预测的值,从而避免使用未初始化变量可能带来的不确定行为。变量赋值则是在变量声明之后的任何时候,给变量赋予一个新的值。值得注意的是,变量初始化在某些情况下是必要的,而在其他情况下则是可选的,这取决于变量的存储类别和作用域。

2025-06-20 12:57:08 515

原创 C语言#include命令的用法(非常详细)

通过使用 #include 命令,我们可以避免在每个源文件中重复编写这些常用的代码片段,从而大大简化了代码的维护工作。当编译器遇到 #include 指令时,它会将指定文件的全部内容插入到 #include 指令的位置,这个过程是在实际编译开始之前由预处理器完成的。总的来说,#include 命令是C语言中一个简单但强大的语法,它不仅允许我们重用代码,还帮助我们组织和管理复杂的项目结构。在C语言中,#include 命令是一个预处理指令,用于在编译之前将其他文件的内容包含到当前源文件中。

2025-06-19 16:22:35 976

原创 #include <stdio.h>的含义和用法(非常详细)

值得注意的是,#include 指令不仅仅用于包含标准库头文件。在中大型项目中,我们经常会创建自己的头文件来组织代码,下面是一个实例演示。首先,我们将创建一个名为 mathoperations.h 的自定义头文件,其中包含一些基本的数学运算函数声明;然后,我们将在主程序中包含并使用这个头文件。/*** 系统学习C语言 https://xiecoding.cn/c/**/// 函数声明在这个头文件中,我们定义了四个基本的数学运算函数:加法、减法、乘法和除法。

2025-06-19 16:13:40 1862

原创 一文快速搞懂C语言字符串结束标志(空字符)

例如,当使用 strncpy() 函数复制固定长度的字符串时,如果源字符串的长度超过了指定的长度,结果字符串可能不会自动添加结束标志。例如,如果我们忘记为字符串分配足够的空间来容纳结束标志,或者在复制字符串时忽略了结束标志,就可能导致程序出现意外行为或崩溃。从输出结果我们可以看到,虽然字符串的可见长度是 5,但数组的实际大小是 6,这就是因为结束标志 '\0' 占用了一个额外的字节。在C语言中,字符串有一个特殊的结束标志,这个结束标志是一个空字符(null character),用。

2025-06-18 18:03:48 552

原创 C语言数组逆序输出方法大全(附带源码,新手必看)

数组逆序输出是C语言编程中一个常见且实用的操作,这个过程涉及将数组中的元素按照与原始顺序相反的顺序进行输出。接下来,我将带各位读者一起学习几种数组逆序输出的方法。

2025-06-18 17:55:43 963

原创 null在c语言什么意思(非常详细,新手必看)

需要注意的是,虽然 NULL 通常被定义为整数 0,但在C语言中,我们不应该直接使用 0 来代替 NULL。使用 NULL 可以提高代码的可读性,并且更明确地表达我们的意图是在处理指针。总的来说,NULL 在C语言中表示空指针,它可以帮助我们初始化指针、检查内存分配是否成功、防止悬挂指针问题,以及在各种数据结构中标记特殊位置。在这个例子中,我们使用 NULL 作为循环的终止条件,当遇到 NULL 时,就知道已经到达了链表的末尾。在C语言中,NULL 代表了一个特殊的指针值,用来表示“空”或“无效”的指针。

2025-06-17 13:41:43 2498

原创 C语言指针常量和常量指针的区别(新手必看)

相反,ptr2 可以改变它所指向的地址(从指向 x 变为指向 y),但我们不能通过 ptr2 来修改它所指向的值。然而,我们可以通过这个指针来修改它所指向的内容(也就是它所指向的内存位置中的值)。换句话说,指针是固定的,但指针指向的内容是可变的。这意味着指针可以指向不同的内容(也就是它所指向的内存位置中的值),但是不能通过这个指针来修改内容。也就是说,指针本身可以改变,可以指向不同的内容,但是它所指向的内容是不可修改的。指针常量通常用于确保指针始终指向特定的内存位置,而常量指针则用于保护数据不被意外修改。

2025-06-17 13:30:34 904

原创 return 0在c语言中的功能(非常全面,附带实例)

return 0 在C语言中扮演着重要的角色,它不仅标志着程序的正常结束,还为程序与操作系统之间的通信提供了一种简单而有效的机制。养成在 main 函数末尾使用 return 0 的习惯,可以使你的代码更加规范,更易于理解和维护。同时,合理使用不同的返回值,可以让你的程序在遇到错误时提供更多有用的信息,从而提高程序的健壮性和可调试性。

2025-06-16 14:09:10 1384

原创 C语言函数返回数组的4种方法(非常全面,新手必看)

虽然 C语言不支持直接返回数组,但我们有多种方法可以实现类似的功能。选择哪种方法取决于具体的需求,如数组大小是否固定、是否需要动态分配内存、是否需要返回额外信息等。在实际编程中,我们需要权衡这些方法的优缺点,选择最适合当前场景的解决方案。无论选择哪种方法,都要注意内存管理,避免内存泄漏和访问越界等常见问题。

2025-06-16 13:38:21 863

原创 C语言水仙花数详解(附带源码和解析)

通过这个水仙花数的 C语言实现案例,我们能够直观地理解如何运用数学运算与循环结构来解决特定的数字问题。这不仅有助于我们深入掌握 C语言的基本运算和控制流程,还能有效锻炼逻辑思维能力。希望大家能够多多从这类小实例中汲取经验,不断提升编程技能,为解决更复杂的问题打下坚实基础。

2025-06-10 19:49:31 513

原创 顺序表与数组根本不是一码事!(新手必看)

网络上,很多人认为顺序表就是数组,或者数组就是顺序表等等,这些理解都是错误的、片面的。数组是一种数据类型,专门用来存储一组数据;顺序表是一种存储结构,专门用来存储逻辑关系为“一对一”的一组数据。

2025-06-10 19:45:13 404

原创 C语言数组去重的2种方法(附带实例)

在实际应用中,选择哪种去重方法取决于多个因素,如数组是否有序、数组的大小、可用的内存空间等。对于大型数组,可能需要考虑更高效的算法,如使用哈希表来检测重复元素,这可以将时间复杂度降低到 O(n),但会增加空间复杂度。这个函数的工作原理是:对于数组中的每个元素,我们检查它是否已经存在于新数组(即前 newSize 个元素)中,如果不存在,我们就将它添加到新数组的末尾。在 C语言中,去掉数组中重复的元素是一个常见的编程任务,这个过程通常被称为数组去重。这种方法的时间复杂度较高,但不要求输入数组有序。

2025-06-06 19:54:00 382

先序线索二叉树、中序线索二叉树和后序线索二叉树

对先序线索二叉树、中序线索二叉树和后序线索二叉树进行了 C 语言实现,主要包括线索二叉树的建立和遍历过程。

2024-01-01

栈求表达式的值(C语言实现)

用栈求表达式的值,提供了完整、可执行的 C 语言程序

2023-12-28

双向链表实现贪吃蛇游戏(C语言版)

本资源设计实现的贪吃蛇游戏,用双向链表实现,编程语言为 C 语言,源码文件有 3 个,分别为 snake.h、snake.c 和 main.c。

2023-12-26

反转带头结点的链表(4种方法)

用迭代、递归、头插、就地逆置共 4 种方法反转带头节点的链表,代码用 C 语言实现。

2023-12-26

反转链表(不带头结点)

用迭代、递归、头插、就地逆置共 4 种方法反转不带头节点的链表,代码用 C 语言实现。

2023-12-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除