
C语言数据结构学习-笔记
文章平均质量分 93
C语言数据结构学习
冰果滴
Goal
展开
-
C语言【数据结构】二叉树实现
目录一.二叉树逐步实现1.创建结构体2.创建二叉树3.二叉树前序遍历4.二叉树中序遍历5.二叉树后序遍历6.二叉树层序遍历7.二叉树节点个数8.二叉树叶子节点个数9.二叉树第k层节点个数10.二叉树最大深度11.二叉树查找值为x的节点12.判断二叉树是否为完全二叉树13.二叉树销毁二.代码1.BinaryTree.h2.BinaryTree.c3.Test.c4.Queue.h5.Queue.c三.测试结果前言:二叉树的最后一篇,实现二叉树(才发现前面竟然忘记写了😢) 发现了就赶紧补上.原创 2022-06-16 20:02:13 · 1605 阅读 · 0 评论 -
C语言【数据结构】算法的时间复杂度和空间复杂度O()
前言:了解算法的时间复杂度和空间复杂度是学习数据结构的一个基础知识。一.算法效率1.算法的复杂度算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。 时间复杂度主要衡量一个算法的运行快慢,而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量...原创 2022-05-26 06:00:00 · 487 阅读 · 0 评论 -
C语言【数据结构】二叉树实现堆及堆排序
前言:这一篇先用完全二叉树来实现堆及堆排序,下一篇将会把整个初阶的二叉树完结。一.二叉树的顺序结构及堆的概念1.二叉树的顺序结构普通的二叉树是不适合用数组来存储的,因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储,需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事,一个是数据结构,一个是操作系统中管理内存的一块区域分段。2.堆的概念及结构(1)堆的概念如果有一个集合K = { k0,k1 ,k2.原创 2022-04-15 09:00:00 · 2249 阅读 · 0 评论 -
C语言【数据结构】顺序表(动态开辟)实现
前言:这是数据结构的开始,顺序表。现在已经开始学数据结构了,学数据结构最重要的3点是①善于画图,多画图思考②一定要细心③勤加练习好了,现在开始顺序表的学习了:1.预备工作首先呢,要想创建一个顺序表,首先我们可以创建3个文件分别为SeqList.h, SeqList.c, Test.c接下来我们就首先要创建一个结构体:#define SLDataType inttypedef struct SeqList{ SLDataType* a; int size;//存..原创 2022-03-12 20:48:44 · 1517 阅读 · 2 评论 -
C语言【数据结构】链表(带头双向循环)实现
前言:上次我们实现了单链表,而这个链表与单链表殊途同归。建议先学过单链表后再学习带头双向链表,学过单链表之后会发现这个很简单。单链表链接:https://blog.youkuaiyun.com/qq_60750110/article/details/123808059?spm=1001.2014.3001.5501结构上相较单链表要复杂一点,但是实现上要比单链表简单很多。我实现的这个链表内部的插入和删除等,里面一部分的代码顺序都是可以改变的,不需要完全一样。一.带头双向链表逐步实现1.创建结构体原创 2022-04-03 11:40:09 · 4323 阅读 · 0 评论 -
C语言【数据结构】单链表实现
前言:继上面的顺序表实现完成后,这次我们来实现单链表。一.单链表逐步实现1.创建结构体typedef int SLTDataType;typedef struct SListNode{ SLTDataType data; struct SListNode* next;}SListNode;2.原创 2022-03-29 15:31:40 · 3296 阅读 · 0 评论 -
C语言【数据结构】树及二叉树相关概念及性质
目录一.树1.树的概念2.树的相关概念3.树的性质4.树的表示二.二叉树1.二叉树的概念2.特殊的二叉树3.二叉树的性质4.二叉树存储结构前言:现在开始学习树了,但是在C语言阶段,我将只会学习一些初阶的二叉树,并没有太难的知识,但是在这里我也要把它拆开,来分出来专门的概念以及相关二叉树的实现。一.树1.树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒......原创 2022-04-14 10:29:08 · 916 阅读 · 0 评论 -
C语言【数据结构】多种排序 实现
前言:这里将会实现插入排序、希尔排序,选择排序、堆排序,冒泡排序、快速排序,归并排序和计数排序。注意:这里的排序都为升序一.插入类型的排序1.插入排序void InsertSort(int* a, int n){ for (int i = 0; i < n - 1; ++i) { int end = i; int tmp = a[end + 1]; //单趟排序 while (end >= 0) { if (tmp < a[end])原创 2022-04-24 12:54:01 · 4755 阅读 · 0 评论 -
C语言【数据结构】栈与队列实现
前言:通过前面的顺序表,链表的学习,这里的栈和队列会很简单,用的都是上面两种数据结构。所以这里就把栈和队列放在一起来说。一.栈具体实现这个栈是使用动态顺序表来实现的,相对于使用链表要更好一些,当然也可以使用链表。1.创建结构体typedef int STDataType;typedef struct Stack{ STDataType* a; int top;//栈顶的位置 int capacity;//容量}ST;动态顺序表标配,只是这里用top来代替size,to原创 2022-04-04 09:37:42 · 1896 阅读 · 0 评论