
数据结构与算法(C语言)
以C语言实现数据结构
晨曦学习日记
在校学习linux系统编程的本科生
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
进阶!归并排序代码实现(C语言)
归并排序是一种采用分治策略的高效排序算法。其核心思想是将数组递归分解为最小单元后有序合并,C语言实现需注意分解、合并和递归调用三个关键环节。算法时间复杂度稳定为O(nlogn),但需要O(n)额外空间。具体步骤包括:分解数组至单个元素、合并两个有序子数组、递归完成整体排序。代码实现展示了分块归并的过程,通过交替使用辅助数组完成排序,最终确保结果存储在原始数组中。该算法性能优越,适合大规模数据排序。原创 2025-05-22 11:52:57 · 341 阅读 · 0 评论 -
校招面试必考!快速排序(C语言)
快速排序是一种高效的分治排序算法,通过选择基准值将数组划分为左右两部分并递归排序。C语言实现要点包括基准值选择(如三数取中法)、分区操作和递归处理。时间复杂度平均为O(nlogn),最坏情况O(n²)可通过优化避免。具体步骤为:1)选择基准值;2)分区操作交换元素;3)递归排序子数组。文末给出了完整的快速排序C语言实现代码。原创 2025-05-22 11:23:33 · 329 阅读 · 0 评论 -
哈希表的线性探测C语言实现
哈希表(Hash Table)是一种基于哈希函数实现的高效数据结构,用于存储键值对(Key-Value)。它通过哈希函数将键(Key)映射到一个较小范围的整数值(通常是数组的索引),从而快速定位存储位置。哈希表的核心在于通过哈希函数实现快速的插入、查找和删除操作,其平均时间复杂度接近。原创 2025-04-26 14:37:00 · 737 阅读 · 0 评论 -
几种排序方式的C语言实现(冒泡、选择、插入、希尔等)
定义两个指针, Left Right 左指针右移找到比基准大的数, 右指针左移找到比基准小的数,两个指针交换内容,假设未排序的第一个为最小值,然后遍历未排序的内容,找到真正的最小值,和未排序的第一个位置互换,相邻两个元素比较,若前面一个元素大,就交换位置,一轮进行n-1次比较,一共执行n-1轮。基准:第一个或者最后一个元素, 优化方案:第一个、最后一个,中间元素 ,三个数的中间值。- 其他排序:冒泡、选择、插入、快速、归并、希尔、堆……- OO(n*n):冒泡、选择、插入、希尔...然后十位、百位、、、原创 2025-05-16 19:19:06 · 248 阅读 · 0 评论 -
C语言数据结构:双向链表的操作实现
双向链表(Doubly Linked List)是一种常见的线性数据结构。与单链表不同,双向链表的每个节点不仅包含指向下一个节点的指针(对双向链表的操作有:头插法,尾插法,清空链表,遍历链表,得到尾结点,特定位置插入,特定位置删除。这种结构使得双向链表可以从两个方向遍历,操作更加灵活。:由于有前驱指针,可以更方便地操作节点的前驱和后继。接下来我们通过代码来看对双向链表的操作。),还包含一个指向前一个节点的指针(:每个节点需要额外存储一个前驱指针。:可以从头到尾或从尾到头遍历链表。原创 2025-03-15 15:27:05 · 185 阅读 · 0 评论 -
C语言数据结构:栈的操作实现
2、进制转换(直接取余得到的顺序和结果相反,通过栈来调转)本文使用顺序栈,实现二进制转换。1、中缀表达式转后缀表达式。栈(Stack)是一种遵循。3、款项金额转中文大写。4、编辑器中括号的匹配。原创 2025-03-21 20:34:51 · 264 阅读 · 0 评论 -
力扣题解:142. 环形链表 II
循环链表是一种特殊类型的链表,其尾节点的指针指向头节点,形成一个闭环。4).快指针在一圈内追上慢指针:如果慢指针走一圈,快指针则走了两圈,在这两圈内,快指针一定会与慢指针相遇,所以快指针在一圈内追上慢指针。2).如果有环,则快指针先进入环,慢指针后进入环, 如果无环,则fast会走出循环判断条件,返回空。3).有环时,慢指针进入环后,快指针相对慢指针每次移动一格,也就是快指针会追上慢指针。1).我们声明两个指针,快指针每次向链表下方走两步,慢指针则走一步;入口距离=(n-1)圈长+相遇点到入口的距离。原创 2025-04-09 21:41:33 · 402 阅读 · 0 评论 -
C语言数据结构:队列的操作实现
队列是一种常见的数据结构,遵循先进先出(FIFO)原则,即最先进入的元素最先被移除。它类似于现实生活中的排队,先到的人先接受服务。原创 2025-03-28 20:55:33 · 314 阅读 · 0 评论 -
C语言数据结构:链表的操作实现
2、寻找链表的中点(也可以找到其他比例的点去分割链表):快指针一次向尾部走两步,慢指针走一步,直到指向NULL,这时慢指针就会指向中间结点(偶数链表会指向中间的上一个,奇数会指向中间值)。本文包括链表的基本操作:初始化、头插法、尾插法、遍历打印、获取尾结点地址、指定位置添加和删除结点、获取链表长度、得到尾指针、释放链表、获得倒数第K个结点的值(快慢指针法)、翻转链表。1.找到倒数第K个值:快指针先走K步,循环向链表尾部走,直到指向NULL,这时慢指针就会指向想要的结点。原创 2025-03-09 17:02:50 · 421 阅读 · 0 评论 -
C语言数据结构:树的实现、前序、中序、后序遍历
树是一种非线性的数据结构,由若干个节点组成。每个节点都包含数据,并且可以有多个子节点。树的最顶端是一个特殊的节点,叫根节点,它没有父节点。从根节点开始,树不断向下分叉,形成不同的层次。最底层的节点叫叶子节点,它们没有子节点。原创 2025-04-12 18:50:48 · 496 阅读 · 0 评论 -
c语言数据结构:顺序表增删改查函数的实现
1、下列代码中 我用Eelemtype 来对int 取别名,在本段代码中意义不明显,但是在大量数据中如果要改int 型为 double型,则取别名的有点就显现出来了。其中共包含:1、初始化 2、最后一位插入 3、遍历 4、特定位置插入数据元素 5、特定位置删除数据元素 6、查找数据元素e第一次出现的位置。在数据结构中,我们最先接触到的内容就是线性表,本片文章的内容就是线性表中对顺序表增删改查的c语言实现。5、要注意顺序表的位置和在数组中序号的关系,length-1。4、对结构体取别名 Sq。原创 2025-03-06 18:04:34 · 326 阅读 · 0 评论