C数据结构
文章平均质量分 94
数据结构知识点
竹等寒
本洞府用来记录心得与笔记,道友们权当进来看个热闹。
若寒舍能助道友领悟大道,本散修也为之感到高兴。
展开
-
C数据结构:哈夫曼树算法实现与应用
引入路径相关知识:结点之间的路径长度:到达两结点之间的路径分支数就是路径长度。树的路径长度:根结点到每一个结点之间的路径长度之和。权值的解释:WPL(带权路径长度)= 节点全值 * 路径长度之和我在构造哈夫曼树的时候意识到如果不按照规定的方法构造二叉树的话就会造成很多种可能,构造出的二叉树也不尽相同,所以我们的前辈哈夫曼博士就想了一个办法就是构造最优二叉树,最优二叉树就是我们要学习的哈夫曼树吗。我对哈夫曼树如何建立的操作的理解:可以看下图作为一个例子:总结:哈夫曼树生成过程产生的结点规律:n -原创 2022-07-09 00:10:12 · 470 阅读 · 2 评论 -
C数据结构:树和森林存储方式与遍历方式
树的定义:只有一个根节点,但是分支可以没有规律,也就是说不像二叉树那样每个结点最多生出两个分支。而且树和接下去学习的图都有一个共同的特点就是套娃,无限套娃。树的存储结构方式都会用到数组顺序存储结构,数组是核心,数组结合链式的也有。至于为什么树要用到数组比较多,我认为是数组有一个很好的点就是他的位置可以很容易且快速的找到并访问,但是链式就不具有该优点,因为链式是一条绳子上的蚂蚱,必须一个一个的找。很显然就像名字说的那样,用该结点的双亲结点位置来表示当前的结点。双亲表示法就比如:让孩子记住自己父母的电话一原创 2022-07-05 22:16:15 · 1536 阅读 · 4 评论 -
C数据结构:二叉树的基本操作
根结点:非空树的第一个结点,也就是所有结点的曾曾曾…祖先叶子结点:就是每个分支的终端结点。双亲结点:孩子的父母就称为双亲结点。(个人理解:分支的妈妈就是双亲结点,至于为什么树都称为双亲,我认为是为了二叉树的方便使用,因为二叉树只有两个孩子,两个孩子的母亲,就是双亲结点。)兄弟结点:1、所在层次一样。2、双亲结点一样,也就是需要是同一个妈生的才是兄弟。这些都称为兄弟结点。堂兄弟结点:1、所在层次一样。2、双亲结点不一样,必须是不同妈生的才是堂兄弟。这些结点称为堂兄弟结点。结点的度:顾名思义就是每一个原创 2022-07-02 17:12:58 · 438 阅读 · 0 评论 -
C数据结构:KMP算法详解(呕心沥血)
(* ̄︶ ̄)首先希望各位不要被KMP算法吓到,理解之后其实很容易上手。这篇博客的目的是希望通过鄙人的方式写出一些通俗易懂的“ 妙手 ”想法去理解,所以在观看本篇博客前请三思~因为网上对于KMP算法的解释很多,比我解释的还准确,所以如果你想理解更深更透彻的话可以搜索KMP算法,找到浏览次数最高的即可,若你只是想知道或者只是想解决掉KMP算法是如何执行和认识该算法的运行过程或许我这篇博客能帮到你。我尽可能的把我在学习过程中遇到的困难和不理解的地方都写在这篇博客上,所以初衷还是希望用自己的理解方式来帮助大家原创 2022-06-22 00:28:23 · 1005 阅读 · 2 评论 -
C数据结构:循环队列的顺序存储结构
首先分为三个部分**第一部分:** 进队**第二部分:** 出队(在你队满了的时候,若还想继续录入信息,进入下一步)**第三部分:** 队头移动+1个位置,在队满的情况下+1会造成假溢出,也就是队头队尾相撞了,那么这时候队尾也进行一个+1的操作,这样就实现了队头队尾一直处于连在一起的形式,也就是形成了循环队列。==( **↓** 考虑的因素 **↓** )==队列还没满的时候想出队的话,也不用担心这个算法会出错,因为你出队的时候也包含在了队头+1移动的操作,第三部的算法肯定能满足这个条件,现在原创 2022-06-19 11:04:39 · 712 阅读 · 0 评论 -
C数据结构线性表:最全链表实战剖析—单 双 循环链表&增删改查
前言说明1文章首先是从单链表引入,由浅入深拓展到循环链表,但是循环链表我没有给代码,原因很简单,基本操作基本和单链表一样,就是判断条件从之前的是否为NULL变成了是否为头指针。比较着重性的给出单链表的具体如何操作与实现,循环链表的部分会提一下在单链表中如何修改成为循环链表。说明2双向链表具体实现其实也和单链表差不多,但是双向链表在连接节点的时候步骤比较多,我在文章和代码里面也总结了一下双向链表连接节点需要的“四步法。” 另一个循环双向链表我就不提了,因为看到这的小伙伴想必都对链表的功能实现已经烂熟于原创 2022-05-02 22:09:15 · 844 阅读 · 0 评论 -
C数据结构线性表:实现顺序表的增删改查&完整篇
文章目录①前言顺序表结构体的定义②初始化顺序表③插入新的元素插入的时候需要特别注意的几点④删除元素第一个删除元素功能实现第二个删除元素功能实现对代码下面中**i- -**的说明(第二个删除函数)⑤查找某一个元素,并打印其下标⑥清空顺序表⑦销毁顺序表总:附上源代码①前言1:大家在观看的过程中不必纠结我的变量名,都是用英语对应功能意思,应该都是比较好理解。2:就是我的顺序表是全局变量,你完全可以在main函数里面进行定义,在本代码程序中,运行结果没有任何区别,因为我的函数都是考虑到大家的定义变量位置不同,原创 2022-04-30 16:51:32 · 1969 阅读 · 0 评论