![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 65
zhaoxaun666
这个作者很懒,什么都没留下…
展开
-
复杂链表的复制
复杂链表的复制。一个链表的每个节点,有一个指向next指针指向下一个节点,还有一个random指针指向这个链表中的一个随机节点或者NULL,现在要求实现复制这个链表,返回复制后的新链表。typedef struct SListNode{ int data;//值 struct SListNode *next;//下一节点的指针 struct SListNode *random;//原创 2018-02-09 09:32:19 · 136 阅读 · 0 评论 -
实现二分查找算法的递归及非递归
什么是二分法算法:二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一原创 2017-12-08 16:28:37 · 364 阅读 · 0 评论 -
堆的TopK问题,优先级序列,堆排序d
堆的概念: 如果有一个关键码的集合K = {k0,k1, k2,…,kn-1},把它的所有元 素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足: Ki <= K2*i+1 且 Ki<= K2*i+2 (Ki >= K2*i+1 且 Ki >= K2*i+2) i = 0,1,2…,则称为小堆(或大堆)。 小堆(大堆)中:任一结点的关键码均小于(大于)...原创 2018-02-26 20:34:28 · 229 阅读 · 0 评论 -
哈希——拉链法
首先写哈希——拉链法要知道哈希冲突。 哈希冲突: 对于两个数据元素的关键字 Ki 和 Kj (i != j),有 Ki != J ,但有: HashFun(Ki) == HashFun(Kj) 即不同关键字通过相同哈希哈数计算出相同的哈希地址,该种现象称为哈希冲突或哈希碰撞。把具有不同关键码而具有相同哈希地 址的数据元素称为“同义词”所以解决哈希冲突两种常见的方法是:闭散列和开散...原创 2018-03-01 15:25:06 · 3894 阅读 · 0 评论 -
哈希——开放定址法
哈希函数:影响哈希冲突的原因:引起哈希冲突的一个原因可能是:哈希函数设计不够合理。 哈希函数设计原则: 哈希函数的定义域必须包括需要存储的全部关键码,而如果散列表允许有m个地址时,其值域必须在0到m-1之间 哈希函数计算出来的地址能均匀分布在整个空间中 哈希函数应该比较简单解决哈希冲突两种常见的方法是:闭散列和开散列闭散列闭散列:也叫开放地址法,当发生哈希冲突时,如果哈希表未被装满,说明...原创 2018-03-01 16:00:57 · 1080 阅读 · 0 评论 -
排序算法--7大排序问题解决方法
排序分为:1.插入排序2.希尔排序3.选择排序4.冒泡排序5.堆排序6.快速排序7.归并排序具有稳定性的排序是:插入排序,归并排序,冒泡排序快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。1. 插入排序-直接插入排序 升序(先将序列的...原创 2018-03-12 18:46:11 · 2466 阅读 · 0 评论 -
数据结构思维导图
数据结构思维导图:原创 2018-04-25 21:29:28 · 438 阅读 · 0 评论 -
空格替换 C语言
题目:实现一个函数,把字符串中的每个空格替换成%20.例如,输入“We are happy”,则输出We%20are%20happy.主要的思想:思想:我们可以先遍历一次字符串。这样就可以统计出字符串中的空格总数,每替换一个空格,长度增加2,因此替换以后字符串的长度等于原来的长度加上2乘以空格数目。我们从字符串的后边开始复制替换,首先准备俩个指针,p1,p2p1指向原始字符串的末原创 2018-01-30 13:25:54 · 1116 阅读 · 0 评论 -
二维数组中查找
1.题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序, 每一列都按照从上到下递增的顺序排列。请完成一个函数, 输入这样的一个二维数组和一个整数, 判断数组中是否该整数。思想:首先选取数组中右上角的数字,如果该数字等于要查找的数字,则查找 过程结束;如果该数字大于要查找的数字,则要剔除这个数字所在的列 ;如果该数字小于要查找的数字,则提出这个数字所在的行。总的来原创 2018-01-28 09:50:34 · 167 阅读 · 0 评论 -
求树的深度和判断是否为平衡二叉树
首先如何求树的深度?思想:1.求树的深度首先要判断这棵树是否为空树,如果为空树就返回0。2.定义俩个变量来记录左子树与右子树的大小。3.比较左子树与右子树的大小,返回大的值 加一。4.以上为递归遍历,约束条件为左子树或右子树是否为零。实现代码:int TreeDepth(BTnode* TreeNode){ if(TreeNode==NULL) ...原创 2018-06-26 20:59:40 · 347 阅读 · 0 评论