数据结构
初闻
这个作者很懒,什么都没留下…
展开
-
静态顺序表
一、SeqList.h#ifndef __SeqList_h__#define __SeqList_h__#include <stdio.h>#include <string.h>#include <assert.h>#include <Windows.h>#define N 5typedef int DataType;...原创 2018-03-19 17:26:49 · 173 阅读 · 0 评论 -
解析二叉树相关面试题
一、BTree.h#ifndef __BTree_h__#define __BTree_h__#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;assert.h&gt;#include &lt;Windows.h&gt;typedef int BTDataType;typedef原创 2018-04-25 17:50:21 · 248 阅读 · 0 评论 -
哈希变形——位图
一、介绍:位图就是用一个bit位表示一个数的存放状态,适用于处理海量数据,可以大幅度减少空间。二、图解三、代码实现BitMap.h#ifndef __BITMAP_H__#define __BITMAP_H__#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;assert.h&gt;...原创 2018-05-17 17:41:45 · 308 阅读 · 0 评论 -
哈希扩展——布隆过滤器
一、基本原理: 对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数对应位都是1说明存在,但是这个过程并不能保证查找的结果是100%正确的。二、要点:删除 不支持删除一个已经插入的关键字,因为该关键字对应的位可能会牵动到其他的关键字。所以...原创 2018-05-17 18:32:44 · 271 阅读 · 0 评论 -
二叉搜索树
一、BSTree.h#ifndef __BSTREE_H__#define __BSTREE_H__#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef int DataType;typedef struct BSTreeNode{ struct BST...原创 2018-05-05 23:43:06 · 152 阅读 · 0 评论 -
哈希表——开放定址法
一、Hash.h#ifndef __HASH_H__#define __HASH_H__#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;assert.h&gt;typedef int HashDataType;typedef enum Status{ EMPTY, EXITS,...原创 2018-05-12 11:43:32 · 459 阅读 · 0 评论 -
哈希表——拉链法
一、Hash.h#ifndef __HASH_H__#define __HASH_H__#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;stdlib.h&amp;amp;gt;#include &amp;amp;lt;assert.h&amp;amp;gt;typedef int KeyType;typedef s原创 2018-05-12 18:16:08 · 490 阅读 · 0 评论 -
代码实现:大顶堆
一、Heap.h#ifndef __HEAP_H__#define __HEAP_H__#include <stdio.h>#include <assert.h>#include <string.h>#include <windows.h>typedef int HeapDateType;typedef struct Heap{ HeapDateType* _a; size原创 2018-04-26 10:01:31 · 2363 阅读 · 0 评论 -
中英互译词典(二叉搜索树)
一、BSTree.h#ifndef __BSTREE_H__#define __BSTREE_H__#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h>typedef char* KeyType;typedef char* Va...原创 2018-05-12 22:50:25 · 822 阅读 · 0 评论 -
游戏:贪吃蛇
一、Game.h#ifndef __GAME_H__#define __GAME_H__#include&lt;stdio.h&gt;#include&lt;time.h&gt;#include&lt;stdlib.h&gt;#include&lt;windows.h&gt;//蛇移动区域#define gamewidth 25#define gameh原创 2018-05-06 18:18:46 · 221 阅读 · 0 评论 -
海量数据处理方法及应用
一、哈希切割top K问题给一个超过100G大小的log file, log中存着IP地址, 设计算法找到出现次数最多的IP地址? (1)首先使用散列函数HashFunc(ip)将每一个IP地址转化为整型,再通过HashFunc(ip)%1000使得每一个IP各自进入到所切分的1000个小文件中,余数是多少就映射到多少号文件中,这样做能证相同IP进入到同一文件中; (2)接着在每一个小文...原创 2018-05-24 22:22:58 · 481 阅读 · 0 评论 -
迷宫问题(回溯法)
一、Maze.h#ifndef __Maze_h__#define __Maze_h__#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <Windows.h>#define N 6#define Initsize 5 //初始存储空间#define Increment 2 //每次增量typedef str原创 2018-05-08 21:53:20 · 366 阅读 · 0 评论 -
通讯录(动态)
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h> #include <string.h> #include <Windows.h>#define First_Cap 3 //默认存储大小#define Add_Cap 2 //每次增容大小#define Max_Cap 1...原创 2018-04-14 23:24:45 · 216 阅读 · 0 评论 -
动态顺序表
一、SeqList.h#ifndef __SeqList_h__#define __SeqList_h__#include <stdio.h>#include <string.h>#include <assert.h>#include <windows.h>typedef int DataType;typedef struct...原创 2018-03-19 17:32:52 · 154 阅读 · 0 评论 -
理解:时间复杂度和空间复杂度
一、时间复杂度1、时间复杂度是指执行算法所需要的计算工作量。 2、一个算法语句总的执行次数是关于问题规模n的某个函数,记为f(n),n称为问题的规模。语句总的执行次数记为T(n),当n不断变化时,T(n)也在变化,算法执行次数的增长速率和f(n)的增长速率相同,则有T(n) = O(f(n)),称O(f(n))为时间复杂度的O渐进表示法。 3、一般算法O(f(n))的计算方法: (1)用...原创 2018-03-19 22:25:25 · 335 阅读 · 0 评论 -
单链表
一、SList.h#ifndef __SList_h__#define __SList_h__#include <stdio.h>#include <assert.h>#include <Windows.h>typedef int DataType;typedef struct SListNode{ DataType _data;...原创 2018-03-24 17:03:43 · 199 阅读 · 0 评论 -
解析链表面试题
注明:部分嵌套函数请参照单链表一、从尾到头打印单链表 方法一:非递归void SLitsPrintTailToHead(SListNode* pHead){ assert(pHead); SListNode* end = NULL; while (end != pHead) { SListNode* cur = pHead; ...原创 2018-03-29 22:14:40 · 193 阅读 · 0 评论 -
顺序栈
一、stack.h#ifndef __stack_h__#define __stack_h__#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <Windows.h>#define Initsize 5 //初始存储空间#define Increme...原创 2018-03-31 22:18:36 · 174 阅读 · 0 评论 -
单链队列
一、Queue.h#ifndef __Queue_h__#define __Queue_h__#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <Windows.h>typedef int DataType;typedef struct Que...原创 2018-03-31 22:22:24 · 207 阅读 · 0 评论 -
双链表
一、DList.h#ifndef __DList_h__#define __DList_h__#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;assert.h&gt;#include &lt;Windows.h&gt;typedef int DataType;typedef st原创 2018-04-01 23:08:07 · 134 阅读 · 0 评论 -
逆波兰表达式
一、RPN.h#ifndef __RPN_h__#define __RPN_h__#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <Windows.h> #define Initsize 5 //初始存储空间#define Increment 2 ...原创 2018-04-07 10:49:26 · 223 阅读 · 0 评论 -
解析栈和队列面试题
一、实现一个栈,要求实现Push(入栈)、Pop(出栈)、Min(返回最小值)的时间复杂度为O(1)思路: 1、首先定义两个栈(s,min),栈s存放数据,栈min存放当前所有数据的最小值 2、对于栈s正常入栈,出栈就可以 3、对于栈min,当栈min为空或者入栈的数据x小于等于栈min栈顶元素的值就将x入栈;当栈s栈顶元素的值等于栈min栈顶元素的值,栈min进行出栈操作 4、取栈m...原创 2018-04-14 22:26:35 · 326 阅读 · 0 评论 -
通讯录(静态)
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h> #include <string.h> #include <Windows.h>#define People_Max 1000 // 通讯录人数上限typedef struct Information // 联系人信息{ char ...原创 2018-04-14 23:14:16 · 292 阅读 · 0 评论 -
总结:八大排序算法(图解+代码)
一、直接插入排序基本思想: &amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;amp;amp;nbsp;把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含1个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过原创 2019-08-16 23:52:12 · 1037 阅读 · 0 评论