自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 常见排序算法详解与C语言实现

本文介绍了七种经典排序算法及其C语言实现,包括:冒泡排序(O(n²))、选择排序(O(n²))、插入排序(O(n²))、希尔排序(O(nlog²n))、堆排序(O(nlogn))、快速排序(O(nlogn))和归并排序(O(nlogn))。每种算法通过示例演示了排序过程,并分析了时间/空间复杂度及稳定性。快速排序通常最快,归并排序稳定高效,小规模数据适合插入排序。文章提供了清晰的代码实现和性能对比,为开发者选择合适的排序算法提供了实用参考。

2025-06-04 20:22:33 1224

原创 哈希表入门:用 C 语言实现简单哈希表(开放寻址法解决冲突)

本文通过C语言代码实例解析哈希表的基本原理与实现。首先介绍了哈希表的数据结构定义和初始化过程,重点分析了开放寻址法(线性探测)解决冲突的核心逻辑。代码示例展示了字符数据的插入操作,并通过主函数测试验证功能。文章还指出了当前实现的局限性(固定大小、单一数据类型等),提出了动态扩容、改进冲突处理等优化建议。最后强调了内存管理、负载因子控制等注意事项,总结了哈希表O(1)时间复杂度的优势,并鼓励读者思考查找功能实现、链地址法改造等扩展问题。该实现虽然简单,但清晰地展示了哈希表的核心工作机制。

2025-06-04 19:13:08 823

原创 二叉树搜索树:概念、特性与应用

除了最后一层外,所有层都完全填满最后一层的所有节点都尽可能地向左靠拢换句话说,完全二叉树从根节点到倒数第二层形成一个完美二叉树(所有非叶子节点都有两个子节点),而最后一层的节点都连续集中在左侧。有序性:对于树中的每个节点:左子树所有节点的值都小于该节点的值右子树所有节点的值都大于该节点的值递归结构:每个子树也都是二叉搜索树动态结构:可以高效地进行插入、删除和查找操作int data;// 节点存储的数据// 左子节点指针// 右子节点指针} Node;

2025-04-19 19:12:52 1775

原创 深入理解堆排序:原理与实现

在了解堆排序之前,我们需要先理解什么是堆。完全二叉树性质:除了最后一层,其他层的节点都是满的,且最后一层的节点都靠左排列堆序性质最大堆:每个节点的值都大于或等于其子节点的值最小堆:每个节点的值都小于或等于其子节点的值堆排序通常使用最大堆来实现升序排序。堆排序是一种高效、稳定的排序算法,特别适合大数据量的排序。通过构建最大堆并反复提取最大元素,它能够以O(n log n)的时间复杂度完成排序任务。虽然它不如快速排序在大多数情况下快,但由于其稳定的时间复杂度,在某些特定场景下仍然非常有用。

2025-04-19 15:49:39 861

原创 链队详解:链式存储的队列实现(C语言)

链队是一种基于链式存储结构实现的队列。与顺序队列(基于数组实现)不同,链队通过链表的方式动态分配内存,避免了顺序队列中可能出现的“假溢出”问题。// 定义节点结构int data;// 数据域// 指针域,指向下一个节点} Node;// 定义链队结构// 队头指针Node *rear;// 队尾指针int size;// 队列大小链队是一种基于链式存储的队列实现方式,具有动态分配内存、无需预先确定队列大小、不会出现“假溢出”等优点。与普通队列相比,链队更适合处理动态变化的队列需求。

2025-03-19 08:59:05 1038

原创 链栈的实现及其与普通栈的区别:C语言

节点结构:表示链栈中的每一个节点。链栈结构:表示链栈的整体结构,包含栈顶指针和栈的大小。// 定义节点结构int data;// 数据域// 指向下一个节点的指针// 链栈结构// 栈顶指针int size;// 栈大小链栈是一种基于链表实现的栈结构,具有动态扩展的能力,适合处理不确定大小的数据。通过本文的代码解析,我们详细了解了链栈的各个操作函数及其实现细节。链栈与普通栈(基于数组的栈)相比,具有更高的灵活性,但空间利用率较低。在实际应用中,可以根据具体需求选择合适的数据结构。

2025-03-15 19:16:05 916

原创 用C语言实现一个简单的短网址生成与查询系统

短网址生成:将用户输入的长网址转换为短网址。短网址查询:根据短网址查询对应的长网址。哈希表存储:使用哈希表存储短网址和长网址的映射关系,支持高效的插入和查询操作。本文通过C语言实现了一个简单的短网址生成与查询系统,涵盖了短网址生成、哈希表存储、内存管理等核心内容。通过代码优化和改进,系统的健壮性和可维护性得到了提升。未来可以进一步扩展功能,如支持自定义短网址、统计访问次数等。

2025-03-12 08:41:06 599

原创 动态数组的实现与静态数组的区别:C语言

特性静态数组动态数组内存分配编译时分配运行时分配大小固定可变灵活性低高性能访问速度快,无内存管理开销访问速度快,有内存管理开销内存管理自动管理手动管理适用场景数据量固定,性能要求高数据量不确定,灵活性要求高。

2025-03-11 13:31:55 810

原创 队列的实现与详细解析:C语言

队列是一种线性数据结构,具有以下特点:元素从队尾插入(入队)。元素从队头删除(出队)。遵循“先进先出”(FIFO)的原则。在代码中,我们使用数组来实现队列,并通过两个指针(front和rear)来管理队列的头部和尾部。#define MAX_SIZE 10 // 定义队列的最大容量// 存储队列元素的数组int front;// 队头指针int rear;// 队尾指针int size;// 队列元素计数器} Queue;

2025-03-10 15:15:56 636

原创 双向链表的实现与单链表的区别:C语言

比较单链表与双向链表的区别,并运用C语言详细实现双向链表

2025-03-10 14:56:08 1739

原创 单向循环链表的实现与操作(C语言详解)

在数据结构中,链表是一种非常基础且重要的数据结构。单向循环链表是链表的一种变体,它的最后一个节点指向头节点,形成一个环。本文将详细介绍如何使用C语言实现单向循环链表,并实现常见的操作,如插入、删除、打印和释放链表。

2025-03-05 14:26:53 552

原创 单链表的实现与应用:C语言详解

单链表是一种基于指针实现的线性表,其元素在内存中是非连续存储的,每个节点包含数据域和指向下一个节点的指针域。由于节点在内存中是非连续存储的,单链表的访问模式对 CPU 缓存不友好,访问速度较慢。顺序表的大小通常是固定的,如果需要扩展容量,需要重新分配内存并复制数据,效率较低。单链表的大小是动态的,可以根据需要随时增加或减少节点,无需预先分配固定大小的内存。顺序表的元素在内存中是连续存储的,不需要额外的指针空间,内存利用率高。单链表的节点可以分散在内存中的任意位置,适合存储大小不确定的数据。

2025-03-05 09:19:57 1972

原创 C语言实现十进制正整数转换为二进制

将十进制数转换为二进制数是编程中常见的任务之一。本文将介绍一种在C语言中实现十进制到二进制转换的方法。

2025-02-26 09:09:14 440

原创 Linux中的主要文件目录

1、根目录(/):根目录时文件系统的起点,所有其他目录和文件都是位于根目录之下。3、root目录是root用户的主目录,普通用户无法访问。13、usr 系统资源目录,存放用户安装的应用程序和文件。14、opt 可选软件目录,存放第三方应用程序的安装目录。15、tmp 临时目录,存放临时文件,系统重启后会被清除。12、var 存放经常变化的文件(如日志、缓存、邮件)。11、lib 库函数,存放系统运行所需的共享文件。6、dev存放设备文件,用于与硬件设备交互。5、etc存放系统的配置文件。

2025-02-18 16:22:01 354

原创 Linux中关于用户权限管理的常用命令

Linux中用户权限的管理

2025-02-15 15:27:01 451

原创 Linux中的关于文件管理的常用命令

linux中关于文件管理的常用命令

2025-02-14 22:59:31 469

空空如也

空空如也

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

TA关注的人

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