
数据结构学习代码
CXYhh121
这个作者很懒,什么都没留下…
展开
-
【数据结构】—— 动态增长的顺序表相关接口实现
公共头文件common.h#define _CRT_SECURE_NO_WARNINGS#ifndef __SEQLIST_H__#define __SEQLIST_H__#include<stdio.h>#include<assert.h>#include<string.h>#include<stdlib.h>#endif /...原创 2019-01-27 16:42:06 · 211 阅读 · 0 评论 -
【LeetCode】—— 在LeetCode下怎样确定bug的位置
这里先来看看我最近写的一个题设计链表的实现。您可以选择使用单链表或双链表。单链表中的节点应该具有两个属性:val 和 next。val 是当前节点的值,next 是指向下一个节点的指针/引用。如果要使用双向链表,则还需要一个属性 prev 以指示链表中的上一个节点。假设链表中的所有节点都是 0-index 的。在链表类中实现这些功能:get(index):获取链表中第 index 个节点...原创 2019-03-17 19:04:17 · 426 阅读 · 0 评论 -
【数据结构】—— 数据结构思维导图
这里总结了一下数据结构学到的知识,画了一个思维导图,由于图还未学,所以暂时先空着了,等学习过后进行补充。参考博客:https://blog.youkuaiyun.com/qq_34483204/article/details/75011571...原创 2019-04-01 14:54:35 · 3485 阅读 · 2 评论 -
【数据结构】—— 模拟实现二叉搜索树
头文件BSTree .h#pragma once#include <iostream>using namespace std;namespace CXY{ //二叉搜索树,支持增(Insert)删(Erase)查(Find) template <class K> struct BSTNode { BSTNode(const K& value ...原创 2019-04-14 22:15:43 · 457 阅读 · 2 评论 -
【数据结构】—— 浅析红黑树及模拟实现
红黑树红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的。红黑树的性质每个结点不是红色就是黑色根节点是黑色的如果一个节点是红色的,则它的两个孩子结点是黑色的对于每个结点,从该结点到其所有后代叶结点的简单...原创 2020-03-10 10:25:39 · 567 阅读 · 0 评论 -
【数据结构】—— 哈希的应用之布隆过滤器
BitMap上篇博客我们讲到了位图(BitMap):https://blog.youkuaiyun.com/chenxiyuehh/article/details/90317973 但是位图不是万能的,如我们需要存储的64bit类型的数据,还能不能用BitMap?我们来算一算:EB(Exabyte,艾字节)这个计算机科学中统计数据量的单位有多大,有兴趣的小伙伴可以查阅下资料。这个量级的BitMap,已...原创 2019-05-19 11:37:08 · 591 阅读 · 0 评论 -
【数据结构】—— 哈希表之开散列解决哈希冲突(哈希桶)
哈希的概念 : https://blog.youkuaiyun.com/chenxiyuehh/article/details/90043229开散列1. 开散列概念开散列法又叫链地址法(开链法)/哈希桶/拉链法,首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。2.开散列的实现存...原创 2019-05-11 14:58:35 · 898 阅读 · 2 评论 -
【数据结构】—— 哈希表之闭散列解决哈希冲突
一、底层结构unordered_set/map介绍https://blog.youkuaiyun.com/chenxiyuehh/article/details/89737056unordered_set/map应用https://blog.youkuaiyun.com/chenxiyuehh/article/details/89964419unordered系列的关联式容器之所以效率比较高,是因为其底层使用了...原创 2019-05-09 17:16:48 · 1270 阅读 · 3 评论 -
【数据结构】—— 浅析AVL树及模拟实现
AVL树AVL树的概念二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降...原创 2019-04-19 22:20:24 · 248 阅读 · 0 评论 -
【数据结构】—— 八大排序的相关实现
#include&lt;stdio.h&gt;#include&lt;string.h&gt;void Swap(int* pa, int* pb)//封装一个交换函数,提高代码复用性 { int tmp = *pa; *pa = *pb; *pb = tmp; } void ArrayPrint(int* a, int n) {...原创 2019-01-16 19:15:05 · 223 阅读 · 0 评论 -
【数据结构】—— 二叉树相关接口的实现
公共头文件common.h#pragma once#include<stdio.h>#include<string.h>#include<assert.h>#include<stdlib.h>typedef char BTDatatype;typedef struct BinaryTreeNode{ BTDatatype _d...原创 2019-01-31 09:59:47 · 272 阅读 · 0 评论 -
【数据结构】—— 堆的相关接口实现以及堆排序的实现
堆的相关接口介绍Heap.h#define _CRT_SECURE_NO_WARNINGS#pragma once#include<stdio.h>#include<assert.h>#include<stdlib.h>#include<string.h>typedef int HPDataType;typedef struct ...原创 2019-01-31 09:50:11 · 176 阅读 · 0 评论 -
【数据结构】—— 无头单向不循环链表相关接口实现
单链表相关接口介绍List.h#define _CRT_SECURE_NO_WARNINGS#ifndef __LIST_H__#define __LIST_H__#include<stdio.h>#include<stdlib.h>#include<assert.h>#include<string.h>typedef int SL...原创 2019-01-28 15:09:02 · 221 阅读 · 0 评论 -
【数据结构】—— 带头双向循环链表相关接口的实现
双向链表相关接口介绍List.h#define _CRT_SECURE_NO_WARNINGS#pragma once#include&lt;stdio.h&gt;#include&lt;string.h&gt;#include&lt;assert.h&gt;#include&lt;stdlib.h&gt;// 2、带头双向循环链表增删查改实现 typedef i原创 2019-01-28 15:14:35 · 195 阅读 · 0 评论 -
【LeetCode】—— 设计循环队列LeetCode622题
循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCircularQueue(k): 构...原创 2019-01-09 17:33:44 · 633 阅读 · 0 评论 -
【LeetCode】—— 二叉树基础面试题(上)
一、二叉树的前序遍历(递归实现)LeetCode144题1.1 题目描述给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3]1.2 解题思路1.3 代码实现int treeSize(struct TreeNode* root)//...原创 2019-02-05 19:16:47 · 327 阅读 · 0 评论 -
【数据结构】—— 支持动态增长的栈
栈的相关接口介绍Stack.h#pragma once#include<stdio.h>#include<string.h>#include<stdlib.h>#include<assert.h>// 支持动态增长的栈typedef int STDataType;typedef struct Stack{ STDataTyp...原创 2019-01-29 17:49:21 · 226 阅读 · 0 评论 -
【数据结构】—— 队列相关接口的实现
队列相关接口介绍Queue.h#pragma once#include<stdio.h>#include<string.h>#include<assert.h>#include<stdlib.h>typedef BTNode* QDataType;typedef struct QueueNode{ QDataType _data;...原创 2019-01-29 17:54:16 · 190 阅读 · 0 评论 -
【LeetCode】—— 链表面试OJ题(下)
一、合并两个有序链表LeetCode21题1.1 题目描述将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1-&amp;gt;2-&amp;gt;4, 1-&amp;gt;3-&amp;gt;4输出:1-&amp;gt;1-&amp;gt;2-&amp;gt;3-&amp;gt;4-&amp;gt;4原创 2019-01-29 20:24:22 · 257 阅读 · 0 评论 -
【LeetCode】—— 二叉树的遍历
二叉树的前序遍历(根节点,左子树,右子树)递归实现int treeSize(struct TreeNode* root)//计算所遍历二叉树节点的个数{ if(root == NULL) return 0; else return treeSize(root-&gt;left)+treeSize(root-&gt;right)+1;}//为方...原创 2019-01-07 16:16:30 · 213 阅读 · 0 评论 -
【LeetCode】—— 非递归实现二叉树的遍历(C语言)
一、二叉树的前序遍历LeetCode144题// 支持动态增长的栈typedef struct TreeNode* STDataType;typedef struct Stack{ STDataType* _array; int _top;//栈顶 int _capacity;//容量}Stack;void StackInit(Stack* ps){ assert(ps)...原创 2019-02-10 21:17:24 · 1302 阅读 · 0 评论 -
【数据结构】—— 哈希的应用之位图
位图的概念位图的原理位图是通过将数组下标与应用中的一些值关联映射,数组中该下标所指定的位置上的元素可以用来标识应用中值的情况(是否存在或者数目 或者计数等),位图数组中每个元素在内存中占用1位,所以可以节省存储空间。位图是一种非常简洁快速的数据结构,它能同时使存储空间和速度最优化。数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一个二进制比特位来代表数据是否存在的...原创 2019-05-18 17:30:05 · 544 阅读 · 0 评论