- 博客(17)
- 收藏
- 关注
原创 【数据结构】哈夫曼树
i <= x;i++) {if (array[i].weight < min1 && array[i].parent == 0) {//在构建哈夫曼树的过程中,我们需要选择权重最小的两个结点进行合并,构建出新的结点。为了避免重复选择已经合并过的结点,我们需要在选择最小权重结点的时候排除已经合并的结点。因此,需要通过array[i].parent == 0来判断结点是否已经是其他结点的子结点,如果是,则不考虑这个结点。*m1 = i;j <= x;
2025-03-30 17:30:15
887
原创 【数据结构】堆
堆可以被看作是。即在存储结构上是数组,在逻辑结构上是一棵完全二叉树。在堆中,树的每个节点都满足堆属性,即父节点的值大于(或小于)其子节点的值。具体而言,对于;而对于。这使得堆的根节点(常常是数组的第一个元素)成为堆中最大(或最小)的元素。
2025-03-23 15:02:57
1049
原创 矩阵压缩存储
矩阵中很多值相同的元素并且分布具有一定规律。:矩阵中有很多零元素。(1)为多个值相同的元素只分配一个存储空间;(2)对零元素不分配存储空间。
2025-03-03 21:29:24
1065
原创 【数据结构】树和二叉树
二叉树是n(n>=0)个结点的有限集,它或者是空集,或者由一个根结点及两颗互不相交的分别称作这个根的左子树和右子树的二叉树组成。特点 1、每个节点最多有两个孩子(二叉树中不存在度大于2的结点 2、子树有左右之分,其次序不能颠倒。 3、二叉树可以是空集合,根可以有空的左子树或空的右子树。二叉树不是树的特殊情况,他们是两个概念。二叉树及时只有一棵树也必须进行区分为左子树还是右子树。二叉树的性质和存储结构。
2025-03-02 14:13:02
921
原创 文件的基本操作(未完待续
计算机文件就是存储在电脑磁盘和硬盘上的信息集合,例如:在电脑C盘内放入的文件夹内容就是文件,在程序设计中,我们一般谈的文件有两种:程序文件和数据文件1.:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)2.:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
2024-12-15 16:26:03
632
2
原创 散列表(哈希表)
哈希表的基本思想:在记录的存储地址和它的关键码之间建立一个确定的对应关系。这样,不经过比较,一次读取就能得到所查元素的查找方法。哈希表:采用散列技术将记录存储在一块连续的存储空间中,这块连续的存储空间称为散列表。哈希函数:通过函数将关键字映射为散列表中适当存储位置。散列地址:由散列函数所得的存储地址。即 由k(i)通过H计算找到所对应的散列地址。【哈希函数的构建】和【哈希冲突的解决】。直接定址法,除留取余法,平方取中法,折叠法,数字分析法等等。开放定址法,拉链法。
2024-12-05 20:45:49
770
原创 字符串匹配
:包含子串的串。:串中任意个连续的字符组成的子序列。:子串的第一个字符在主串中的序号。例如S为主串,T中的字符串可以与S中的一部分字符串匹配,所以T为S的子串,位置为S中a的下标。
2024-11-20 16:30:41
1976
原创 [数据结构] 栈
全称堆栈.是一种操作受限的线性表数据结构,类似于数组不过插入和插出数据元素的操作只能在线性表一端进行.**栈顶:**允许执行插入和删除的部分**栈底:**固定的,不执行操作的部分.
2024-11-17 18:07:57
714
原创 大小端与共用体
计算机的内存是以字节为单位划分的,一个字节对应8bit。c语言中有许多类型,如char,short,int等,每种类型占据的字节大小为1,2,4等。而对于位数大于8位的处理器,由于寄存器宽度大于一个字节,所以难免会出现将多个字节安排到内存中的问题,所以就产生了大端存储和小端存储两种存储模式。大端存储将数据的高位存储到低位字节上,将低位存储到高位字节上,如0x1234abcd在内存中的存储形式为小端存储将数据的低位存储到低地址,将高位存储到高地址,与上图存储方式相反。
2024-11-10 16:04:33
357
原创 算法的时间复杂度
但是,通过这种方法来计算时间复杂度仍然是一个麻烦的事情,所以为了便于比较,我们可以仅比较它们中。 一个算法的运行所耗费的时间大致等于计算机执行一种简单操作(赋值,比较,移动等)所需的。情况:假设n在任意一个位置的概率相同为1/n——平均时间复杂度T(n)=O(n)我们会在计算时间复杂度时可能会遇到以下的情况**T(n)=O(n。情况:n在最后一个位置——最坏时间复杂度 T(n)=O(n)由于n的位置不确定,所以该时间复杂度不确定,会产生三种情况。,这时,我们只需讨论算法中所有语句的执行次数了。
2024-11-10 16:03:57
666
原创 【C语言基础】结构体
首先先介绍一下结构体的基本框架,我愿称之为“struct框架”(因为结构体的关键字就是struct)。我们需要使用struct来声明结构体,这里给出结构体的声明的基本样式int hp;int mp;int san;char *name;🚩为结构体的标签名,由自己命名🚩 {}中储存的为成员列表;为成员变量🚩关于*struct Partner partner;*会在下面的结构体嵌套中进行解释结构体成员结构体成员由自己定义并封装在结构体的{}中,可以在后续通过结构体的标签名进行访问。
2024-11-01 23:09:56
2207
原创 ggg一面题题解
n"#define C" # define C(x)((x) + 4) # define N 4 # define Y(n)((N + 2) * n) // 相当于(6*n) int main() {return 0;" # define C(x)((x) + 4) # define N 4 # define Y(n)((N + 2) * n) // 相当于(6*n) int main() {return 0;
2024-11-01 13:49:08
2056
原创 ggg二面题解
字符和数字之间的关系可以通过ASSIC来联系,在本题中,需要用一个数组(一个下标对应一个字母) 在各自字母对应的位置储存该字母出现的次数.那么如何将下标和字母对应起来便是一个问题.此时便可以使用ASSIC和数字的相互转换来实现.上述代码中。*cnt[arr[i] - ‘a’]++*便是通过该方式来实现的. *arr[i] - ‘a’*表示用arr中的字母-'a’的ASSIC的值得到该字母对应的下标(因为’a’是ASSIC小写字母中第一个值),从而可以在其对应位置计数.的输入和输出,显然二维数组必须要用到。
2024-10-31 13:43:42
845
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅