
数据结构
文章平均质量分 82
DS陈工
关关难过关关过!
展开
-
最详细 <双向链表> 航班管理系统 + Makefile项目管理
本项目是一个航班管理系统,使用C语言编写,支持添加、显示、修改、删除航班信息,用户身份验证,航班排序,以及从文件中保存和加载数据。原创 2024-08-07 21:46:35 · 1018 阅读 · 0 评论 -
最全个人笔记【Makefile】
当一个项目中要编译的文件很多时,手工使用编译器一个个进行编译,很明显不具有可操作性,此时必须借助某些软件,协助我们有序地、正确地自动编译整个工程的所有该编译的文件。这样的软件被称为 **工程管理器**,`make` 就是一款工程管理器软件。### **1.2 Makefile是什么**`make` 正常工作时,会读取一个称为 `Makefile` 的配置文件,该配置文件可以为 `make` 指明细致的工作规则,比如所使用的工具链、要编译的目标文件名称、要递归编译的子文件夹路径等等。对工程管理器软原创 2024-08-01 20:57:11 · 623 阅读 · 0 评论 -
最全数据结构个人笔记【哈希表】
哈希表是一种为了提高查找效率的数据存储方式,其核心思想就是将节点的存储位置与节点本身对应起来,让我们在查找数据时无需通过比对就能直接计算得到它的位置。原创 2024-07-31 20:38:17 · 1382 阅读 · 0 评论 -
最全数据结构个人笔记【平衡二叉树】
平衡二叉树又称AVL树,它或者是一棵空树,或者是具有以下特性的二叉排序树(BST)(1) 它的排布方式遵循小-中-大规律(2) 左子树和右子树的深度之差的绝对值不超过1(1,-0,-1)若将二叉树上的节点的平衡因子定义为该节点的左子树的深度减去它右子树的深度,所以平衡二叉树所有节点的平衡因子只可能是-1,0,1只有二叉树上有一个节点的平衡因子的绝对值大于1,则该二叉树不平衡。原创 2024-07-31 20:32:01 · 757 阅读 · 0 评论 -
最全数据结构个人笔记【树-BST】
对于BST而言,插入一个节点主要是要保持其"小-中-大"的逻辑不变,因此插入的的逻辑可以从根节点开始,一步一步寻找新节点的"最终归宿",比如在如下BST中,要插入新节点16,最终应该插入到节点17的左孩子处。由于树中所有的节点均满足,“小-中-大”的规律因此当从根开始查找某个节点时速度比顺序查找要快的多,比如要找节点38,当发现38大于根节点13后,就可以确定13的左子树一定没有38,这就去掉了半边子树的节点。b. 否则,若有右子树,则用右子树中最小的节点min替换根节点,并在右子树中递归删除min。原创 2024-07-30 20:40:46 · 548 阅读 · 0 评论 -
最全数据结构个人笔记【树】
树是一种非线性结构,其严格的数学定义是:如果一组数据中除了第一个节点(第一个节点称为根节点,没有直接前驱节点)之外,其余任意节点有且仅有一个直接前驱,有零个或多个直接后继,这样的一组数据形成一棵树。 节点拥有的子树的数量,称为该节点的度,度为0的节点称为叶子节点或者终端节点,度不为0的节点,称为非终端节点或者分支节点,比如上图节点B的度为2。 日常生活中,很多树的例子,比如一个公司的职员层级关系,学校中院系层级关系,族谱关系等,由于树状结构表现出来都是具有层次的,因此也称为层次结构。原创 2024-07-30 20:31:06 · 1236 阅读 · 0 评论 -
最全数据结构个人笔记【循环队列-链式队列】
队列是最常见的概念,日常生活经常需要排队,仔细观察队列会发现,队列是一种逻辑结构,是一种特殊的线性表。只要满足上述条件,那么这种特殊的线性表就会呈现一种“先进先出”的逻辑,这种逻辑就被称为队列。由于这种固定两端操作的简单约定,队列获得了“先进先出”的基本特性,如下图所示:。原创 2024-07-26 18:54:25 · 961 阅读 · 0 评论 -
最全数据结构个人笔记【栈-链栈】
顺序存储意味着开辟一块连续的内存用于存储数据节点,一般而言,管理栈数据除了需要一块连续的内存之外,还需要记录栈的总容量、当前栈的元素个数、当前栈顶元素位置,如果有多线程还需要配合互斥锁和信号量等信息,为了方便管理,通常将这些信息统一于一个管理结构体中;只要满足上述条件,那么这种特殊的线性表就会呈现出一种"后进先出"的逻辑,这种逻辑就被称为栈,栈在生活中到处可见,比如堆叠的盘子、电梯中的人等等。 不管是顺序栈,链式栈,栈的操作逻辑都是一样的,但由于存储形式不同,代码的实现是不同的。输入数字时,依次入栈。原创 2024-07-25 22:08:16 · 952 阅读 · 0 评论 -
最全数据结构个人笔记【双向链表-双向循环链表】
对链表而言,双向遍历数据节点相较于单向而言方便许多,因此双向链表在实际运用中是最常见的链式形态。附加题:合并两个链表,按从小到大排序(拆链表,比较节点,插入节点到新链表)1.实现循环链表删除节点。2.判断链表是否有环。原创 2024-07-24 17:18:52 · 1225 阅读 · 0 评论 -
最全数据结构个人笔记【单向链表】
另外注意到,整条链表用一个所谓的头指针 head 来指向,由 head 开始可以找到链表中的任意一个节点。 新节点接在原来链表的首节点前面,即新的节点指向原来的首节点,然后首节点被新节点替代。 **1. 从无到有:**第一个节点的诞生,此时的首节点和尾节点都是它本身。 新节点接在尾节点后面,即尾节点指向新节点,原来的尾节点被新节点替代。 特点 : 新接入的节点在前面,后接入的节点在后面。 特点:后接入的节点在前面,先接入的节点在后面。 2.实现链表的修改节点和删除节点。原创 2024-07-24 16:57:53 · 965 阅读 · 0 评论 -
最全数据结构个人笔记【时间复杂度-顺序表】
数据是指对事物的进行的记录并可以鉴别的符号,可以是文字,图片,字母,特殊字符,视频,音频…,对我们有用的信息都可以称为数据。 结构体是指元素(数据)的相互关联和相互作用的关系,比如学生,图书,交通干线等等 数据结构体 = 数据+数据与数据之间的关系 算法是为了实现计算的目的而制定一系列的计算步骤程序 = 数据结构体 + 算法 顺序存储中,由于逻辑关系是用物理位置来表达的,因此从上述示例代码可以很清楚看到,增删数据都是比较繁琐的,需要成片的移动数据。顺序表对数据节点的增删操作是很不友好。原创 2024-07-22 18:42:45 · 1255 阅读 · 0 评论