[C语言][数据结构][链表] 单链表的从零实现!

目录 零.必备知识 1.一级指针 && 二级指针 2. 节点的成员列表     a.数据     b.指向下一个节点的指针. 3. 动态内存空间的开辟 (malloc-calloc-realloc) 一.单链表的实现与销毁          1.1 节点的定义         1.2 单链表的尾插         1.3 单链表的头插         1.4 单链表的尾删         1.5 单链表...

C++数据结构与算法——二叉树公共祖先问题

文章目录 一、236. 二叉树的最近公共祖先二、235. 二叉搜索树的最近公共祖先 一、236. 二叉树的最近公共祖先 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(N...

数据结构与算法】探讨数据结构中的虚拟头节点

目录 前言什么是虚拟头节点?虚拟头节点的作用虚拟头节点的实际应用1. 链表反转2. 删除链表中的节点3. 合并两个有序链表 示例代码总结 前言 在数据结构和算法中,虚拟头节点(dummy node)是一种常见的技巧,用于简化操作和提高代码的可读性。虽然虚拟头节点并不实际存储数据,但它们在许多情况下都能够起到重要作用。本文将深入探讨虚拟头节点的概念、用途以及在实际应用中的一些例子。 什么是虚拟头节点? 虚...

数据结构之顺序表的相关知识点及应用

顺序表源码   顺序表的概念及结构 在了解顺序表之前,得先知道一个东西:线性表。线性表(linear list)是n个具有相同特性的数据元素的有限序列。简单理解就是:线性表指的是具有部分相同特性的一类数据结构的集合。例如:蔬菜分为绿叶类、瓜类、菌菇类。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构...

数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)

个收尾,将最经典的七大排序介绍完毕。 这次的重点正如标题,主要讲的是归并排序,还会带过相对简单很多的冒泡排序和选择排序。在最后还会给这七大排序做出一个时间复杂度和稳定性展示的总结收尾。同时,这也是初阶数据结构的最后一篇。待到再次与数据结构见面时,就会用C++来讲解,因为进阶数据结构相对复杂,用C++会相对轻松一些。话不多说,开始我们今天的内容。 归并排序 归并的思想逻辑 归并排序核心步骤: 为了更好的理解...

数据结构从入门到精通——归并排序

归并排序 前言一、归并排序的基本思想二、归并排序的特性总结三、归并排序的动画展示四、递归实现归并排序的具体代码展示五、非递归实现归并排序 前言 归并排序是一种分治策略的排序算法。它将一个序列分为两个等长(几乎等长)的子序列,分别对子序列进行排序,然后将排序结果合并起来,得到完全有序的序列。这个过程递归进行,直到整个序列有序。归并排序的时间复杂度为O(nlogn),空间复杂度为O(n)。 一、归并排序的基...

深入理解数据结构第二弹——二叉树(2)——堆排序及其时间复杂度

看这篇前请先把我上一篇了解一下:深入理解数据结构第一弹——二叉树(1)——堆-CSDN博客 前言: 目录 一、堆排序 1、堆排序的大体思路 2、堆排序的实例讲解 二、堆排序的时间复杂度 向下排序的时间复杂度 向上排序的时间复杂度 堆排序整体的时间复杂度 总结 一、堆排序 1、堆排序的大体思路 在上一篇我们已经讲过了堆是什么东西,我们已经知道堆有大堆和小堆两种形式,堆排序的想法正是借助它的这个特点诞生的,例...

数据结构03:栈、队列和数组 队习题01[C++]

   考研笔记整理~🥝🥝 之前的博文链接在此:数据结构03:栈、队列和数组_-CSDN博客~🥝🥝 本篇作为链表的代码补充,供小伙伴们参考~🥝🥝 第1版:王道书的课后习题~🧩🧩 编辑:梅头脑🌸 参考用书:王道考研《2025年 数据结构考研复习指导》 目录 🧵01 不牺牲存储单元的单链表 🧵02 队列元素逆置 🧵03 利用两个栈模拟队列 🧵04 链栈 🔚结语 🧵01 不牺牲存储单元的单链表 🧩题目 📇解题思路...

数据结构——二叉树——堆

 前言: 准备工作:本人习惯将文件放在test.c、SeqList.c、SeqList.h三个文件中来实现,其中test.c用来放主函数,SeqList.c用来放调用的函数,SeqList.h用来放头文件和函数声明 一、什么是树 如图,其中0所在位置被称为树顶或者树根都可以,下面的称为子树,其中1所在分叉称为左子树,2所在分叉成为右子树 还有一些规则如下: 对于学过离散数学的同学来说这部分知识并不难,没有...

数据结构——单向链表(C语言版)

printList(head); return 0;} 通过以上步骤,我们实现了用C语言创建、插入、删除和遍历单向链表的基本操作。在实陧过程中,要注意内存分配和释放,避免内存泄漏。链表是一种重要的数据结构,掌握链表的实现原理对于理解其他数据结构和算法也非常有帮助。 在接下来我们也将学习双向链表等更有意思的东西,如果本篇有不理解的地方,欢迎私信我或在评论区指出,期待与你们共同进步。...
© 2024 LMLPHP 关于我们 联系我们 友情链接 耗时0.015852(s)
2024-05-12 15:07:31 1715497651