自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线索二叉树及树的典例应用

哈夫曼树是带权路径最小的树构造过程(1)依据给定的 n 个权值{W0,W1,…,Wn-1}构造n棵只有一个根结点的二叉树,这些二叉树组成一个森林 F={T0,T1,…,Tn-1}。(2)在森林 F 中选取两棵根结点的权值最小的二叉树作为左、右子树合并成一棵新的二叉树这棵新的二叉树的根结点的权值等于其左、右子树根结点的权值之和。这样一来,森林中就减少了一棵树。(3)重复上一步,直到森林 F 中只有一棵二叉树为止,这棵二叉树便是要得到的哈夫曼树。

2025-11-12 15:38:14 747

原创 树与二叉树

例题:在一棵4度为4的树中,有20个度为4的结点,10个度为3的结点,1个度为2的结点,10个度为1的结点,则树的叶子结点个数是?双亲和孩子:结点的子树的根称为该节点的孩子,相应地,该结点称为孩子的双亲。层次:结点的层次从根开始定义,根为第一层,更得孩子为第二层,一次类推。树是一个或多个结点的有限集合,存在一个被称为跟的特定结点。性质一:树的所有结点树等于所有结点的度数之和加1。结点的度:结点拥有的子树称为结点的度。叶子:0度为0的结点或终端结点。非终端结点:度不为0的结点。结点:树中的独立单元。

2025-11-05 12:43:32 351

原创 朴素匹配和KMP算法

接下来遍历这个模式串,当下标之为0的时候,对于模式串中的字符a它前面没有内容,我们这时候用-1标记,当下标值为2的之后,他前面只有一个a,对于这个字符,它没有前缀,所以我们在next数组里面填0,当下标值为2是,它前面的字符ab,这个字符的前缀为a,后缀为b,没有相同的部分,所以继续标记0,当下标值为3时,它前面的字符为aba,它的前缀为a,ab,后缀为a,ba,这时相同的前缀为a它的长度为1,所以我们在next数组的相应位置标记1,基于此,我们可以把next数组填充满,即为{-1,0,0,1,1,2}。

2025-10-28 17:10:31 533

原创 数据结构之栈和队列

栈是仅限定在表位进行插入或删除操作的线性表,因此对于栈来说,表尾端有其特殊的含义,称为栈顶,相应的,表头端称为栈底。不含元素的空表称为空栈。简而言之,栈是一种只允许元素按照先进后出的原则进行的线性表。队列是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端进行删除元素。在队列中,允许插入元素的一端叫做队尾,允许删除元素的一端则称为队头。

2025-10-02 12:02:29 1143

原创 单链表之双向链表及循环链表

循环链表是另一种形式的存储结构,其特点是表中最后一个结点的指针域指向头结点,构成一个环。与单链表不同的是,在判定单链表为空的条件是p!=NULL或p->next!=NULL,而循环链表的判别条件为p!=L或p->next!。其余操作与单链表操作相同,不在此赘述。在循环链表中有一类很有意思的问题,判断链表是否有环。

2025-09-25 20:37:50 364

原创 线性表之链表

释放链表的过程的算法描述可以这样叙述:指针p指向结点后的第一个结点,判断该结点是否指向空结点,如果p不为空,用q指针记录p的后继结点,释放p指向的结点,指针p和q指向同一个结点,循环上面操作。结点的创建由数据域和指针域组成,假设p是指向第i个元素的指针,ai数据域可以用p->data,ai的指针域可以用p->next表示,p->next依然是一个指针,它指向的元素是第ai+1。这个时候单链表的优势就体现出来了,假如存储元素的结点为p,那么就需要插入的结点的后继指向原来L的后继,原来L的后继指向p结点。

2025-09-16 14:29:28 1280

原创 线性表之顺序表

线性表是由数据类型相同的n(n>0)个数据元素组成的有限序列。其结构特点是:存在唯一一个被称作“第一个”的数据元素;存在唯一一个被称作“最后一个”的数据元素;除第一个元素外,结构中的每个数据元素只有一个前驱;除最后一个元素外,结构中的每个数据元素均只有一个后继。

2025-09-10 21:40:07 361

原创 时间复杂度和空间复杂度

时间复杂度的定义:在进行算法分析的时候,语句的总执行次数 T(n)是关于问题规模n的函数,进而进行分析T(n)随n的变化情况确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,记作T(n)=O(f(n))。我们不难看出第一个for循环进行了n+1次,进入第二重循环会进行n*(n+1)还有其中的赋值语句会执行n*n次,再进入第三次for循环,它会执行n*n*(n+1)次,赋值语句执行n*n*n次,所以这个程序会执行f(n)=2n³+3n²+2n+1。同时同一个算法在不同的计算机上的执行时间也不同。

2025-09-07 20:44:35 781

空空如也

空空如也

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

TA关注的人

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