![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 69
菜林子
这个作者很懒,什么都没留下…
展开
-
C语言小项目-词法分析器
词法分析器是编译器中的第一个阶段,其主要任务是扫描输入的源代码字符流,并将字符组成的序列转换为有意义的标记(Token)。每个 Token 包含一个词法单元的信息,如关键字、标识符、运算符、常量等。例如,对于表达式int a = 10;,词法分析器会生成诸如INTASSIGNNUMBER(10)和SEMICOLON等 Token。一个完整的编译器,大致会经历如下几个阶段:各个阶段的职责,简单描述如下:1.词法分析:对源文件进行扫描,将源文件的字符划分为一个一个的记号 (token) (原创 2024-07-02 22:22:32 · 1245 阅读 · 0 评论 -
C语言-堆(heap)排序算法的详解与实现
堆排序(Heap Sort)是一种高效的排序算法,基于堆这种数据结构实现。它具有稳定的O(nlogn)时间复杂度,适用于大规模数据的排序,尤其在实时数据处理和优先队列中应用广泛。本博客将深入介绍堆排序的原理、步骤以及使用C语言实现的示例。原创 2024-06-28 20:17:22 · 349 阅读 · 0 评论 -
C语言-堆(heap)的详解与实现
堆(Heap)是一种特殊的树形数据结构,通常用于实现优先队列。最大堆:父节点的值大于或等于任何一个子节点的值。最小堆:父节点的值小于或等于任何一个子节点的值。在堆中,树的每个节点的值都必须满足堆的性质。原创 2024-06-28 14:25:28 · 215 阅读 · 0 评论 -
C语言-希尔排序算法的详解与实现
希尔排序(Shell Sort)是一种改进的插入排序算法,它通过比较距离较远的元素来提升插入排序的性能。希尔排序将整个数组按一定间隔分割成若干个子数组,并对每个子数组进行插入排序;随着排序的进行,逐渐缩小间隔,直到间隔为1,最终完成排序。希尔排序由Donald Shell于1959年提出,是最早的突破O(n^2)时间复杂度的排序算法之一。原创 2024-06-28 09:20:41 · 226 阅读 · 0 评论 -
C语言-归并排序算法的详解与实现
归并排序(Merge Sort)是一种高效、稳定的排序算法,基于分治法(Divide and Conquer)的思想。它将待排序数组分成若干个子序列,分别排序后再合并,通过递归实现整个数组的排序。归并排序的主要优点在于其稳定的时间复杂度和能够处理大数据集的能力。原创 2024-06-28 09:13:49 · 283 阅读 · 0 评论 -
C语言-快速排序算法的详解与实现
快速排序(Quick Sort)是一种高效的排序算法,它采用分治策略(Divide and Conquer)来将一个数组分成两个子数组:小于基准值的元素和大于基准值的元素,然后递归地对子数组进行排序。快速排序的核心在于其分区(Partition)过程,该过程选取一个基准值,并将数组重新排列使得基准值左边的元素都小于等于基准值,右边的元素都大于基准值。原创 2024-06-28 09:12:08 · 143 阅读 · 0 评论 -
C语言-插入排序算法的详解与实现
插入排序(Insertion Sort)是一种简单直观的排序算法,其核心思想是将未排序的元素逐个插入已排序部分的合适位置,直到整个数组排序完成。它适用于小型数据集或是部分有序的数据集,并且相对于其他复杂度更高的算法,插入排序有较好的性能表现。原创 2024-06-28 09:10:02 · 224 阅读 · 0 评论 -
C语言-选择排序算法的详解和实现
选择排序(Selection Sort)是一种简单直观的排序算法,其基本思想是每次从未排序的部分中找到最小(或最大)的元素,然后将其放到已排序部分的末尾。它属于选择排序的一种,适用于小型数据集或是简单实现排序功能的场景。原创 2024-06-27 17:46:15 · 386 阅读 · 0 评论 -
C语言-冒泡排序算法的详解和实现
冒泡排序(Bubble Sort)是一种简单直观的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素,并依据大小交换它们的位置。它属于交换排序的一种,因其操作过程中元素如同"冒泡"一般逐步移动到正确位置而得名。原创 2024-06-27 17:30:22 · 734 阅读 · 0 评论 -
C语言-栈和队列的详解与实现
队列是一种具有特定限制的线性数据结构,遵循先进先出(FIFO,First In First Out)的原则。在队列中,只能在队尾进行插入操作(enqueue),在队头进行删除操作(dequeue),访问元素的顺序是顺序的。栈是一种具有特定限制的线性数据结构,遵循先进后出(LIFO,Last In First Out)的原则。在栈中,只能在栈顶进行插入(push)和删除(pop)操作,访问元素的顺序是逆序的。这些操作的时间复杂度都很低,使得栈和队列在实际应用中具有高效的性能表现。原创 2024-06-26 10:04:36 · 241 阅读 · 0 评论 -
C语言-循环链表的详解与实现
循环链表(Circular Linked List)是链表的一种形式,其特点是链表中最后一个节点指向第一个节点,形成一个环形结构。本文将详细介绍在C语言中实现循环链表的操作,包括常见的操作及其时间复杂度分析。原创 2024-06-26 09:21:02 · 93 阅读 · 0 评论 -
C语言-双向链表的详解和实现
/ 双向链表节点结构int data;// 节点数据域// 指向前一个节点的指针// 指向后一个节点的指针} Node;// 双向链表结构体定义Node* head;// 头结点指针,指向链表的头部int size;// 链表中节点的数量双向链表通过每个节点存储前驱和后继节点的指针,支持从任意位置直接访问前后节点,使得插入、删除等操作在某些场景下比单链表更加高效。原创 2024-06-25 23:03:08 · 270 阅读 · 0 评论 -
C语言常用数据结构-单链表的详解与实现
int data;// 节点数据域// 指向下一个节点的指针} Node;每个节点包含一个整型数据data和一个指向下一个节点的指针next。最后一个节点的next指针通常指向NULL,表示链表的结束。int data;} Node;Node* head;// 头指针,指向头结点int size;// 链表大小(节点数量)// 创建链表// 销毁链表// 头部插入节点// 尾部插入节点// 指定位置插入节点// 删除头部节点// 删除尾部节点// 删除指定位置节点。原创 2024-06-25 22:43:34 · 737 阅读 · 0 评论 -
C语言-位图(BitMap)的实现与相关应用详解
位图是一种数据结构,用于存储大量的布尔型数据(即每个数据只有两种状态:0或1)。它通过使用每一位来表示一个状态,从而节省内存空间并提高操作效率。在计算机中,最小的存储单位是字节(byte),而位图则是利用位(bit)来进行数据存储和操作。原创 2024-06-25 21:10:42 · 553 阅读 · 0 评论 -
C语言-结构体和内存对齐
在C语言中,结构体的定义使用struct// 定义一个结构体int age;// 声明一个结构体变量// 访问结构体成员并赋值// 输出结构体成员的值return 0;原创 2024-06-21 22:05:51 · 244 阅读 · 0 评论 -
C语言-输入/输出模型
在C语言中,输入/输出(I/O)模型是程序与外部环境(如文件、终端等)进行数据交换的重要机制。本文将详细介绍C语言中的输入/输出模型,包括其基本概念、不同的I/O函数、缓冲区的概念以及示例代码和注释。这些年,我们的硬件设备:CPU,内存,IO设备都在不断迭代,不断朝着更快的方向努力。但是,在快速发展的过程中,有一个核心矛盾一直存在,那就是。我们可以形象地描述为:CPU一天,内存一年;内存一天,IO设备十年。假设CPU执行一条普通指令需要一天,那么CPU读取内存就需要一年;原创 2024-06-21 21:18:32 · 349 阅读 · 0 评论 -
C语言-进程的虚拟内存空间
在操作系统中,每个运行的进程都有自己独立的虚拟内存空间,这是操作系统为了提供隔离性和安全性而为每个进程分配的一部分地址空间。本篇博客将详细介绍C语言中的进程虚拟内存空间,包括其各个部分的特点、作用和使用方法。原创 2024-06-21 20:54:33 · 545 阅读 · 0 评论