
Data Structure Learn
文章平均质量分 87
fzzjoy
Code Change World
展开
-
数据结构-散列表
基本概念散列是一种用于以常数平均时间执行插入、删除、和查找的技术,通过关键字key,经由哈希函数,映射到值val的存储地址。装载因子:散列表中元素个数 除以 散列表的大小。是表示 Hsah 表中元素的填满的程度,若加载因子越大,则填满的元素越多,这样的好处是:空间利用率高了,但冲突的机会加大了。反之,加载因子越小,填满的元素越少,好处是冲突的机会减小了,但空间浪费多了。散列冲突:两个不同的key映射到了同一个值的时候。素数:只能被1和自身整除的数(如 2n−12^{n}-12n−1或者2n+12^原创 2021-10-10 22:13:02 · 337 阅读 · 0 评论 -
数据结构-B树
B树(B−B^-B−树)B树是指一个结点中包含多个关键字(如n个关键字),那么它就对应有n+1个孩子结点。具有以下性质:每个结点x具有以下几个性质x.nx.nx.n: 表明当前结点关键字的个数nx.nx.nx.n个关键字本身按照非降序存放,即:x.key1x.key_1x.key1 <= x.key2x.key_2x.key2 <= … <= x.keynx.key_nx.keynx.isLeafx.isLeafx.isLeaf, 一个bool值,表明该结点是否是叶子结原创 2021-05-15 15:16:26 · 3170 阅读 · 0 评论 -
散列
参考链接:详细图解什么叫平方探查法即二次探测再散列和线性探测再散列(数据结构 哈希函数 哈希冲突)哈希表(散列表)原理详解数据结构:散列(hashing)散列的基本概念散列方法的主要思想是根据结点的关键码值来确定其存储地址:以关键码值K为自变量,通过一定的函数关系h(K)(称为散列函数),计算出对应的函数值来,把这个值解释为结点的存储地址,将结点存入到此存储单元中。检索时,用同样的方法计算地址,然...转载 2015-04-09 18:32:29 · 1371 阅读 · 0 评论 -
数据结构学习——栈的出栈次序及次序种类
学过数据结构的程序猿应该都清楚,栈是一种先入后出,后入先出(LIFO)的表。即插入和删除都只能在一个位置上进行,即栈顶位置。对栈的基本操作有Push(入栈)和Pop(出栈)。在一般软件研发的笔试中,就会经常遇到关于入栈次序一定时,出栈次序有哪些?共有几种?其实,此处只要了解一下卡特兰数的算法结构,参见:http://baike.baidu.com/link?url=T7ZR16yiaWKN原创 2015-04-05 15:44:35 · 10137 阅读 · 2 评论 -
数据结构学习——链表的基本概念和分类
链表由一系列不必在内存中相连的结构组成。每一个结构均含有表元素和指向包含该元素后继元的结构的指针。我们称之为next指针。最后一个单元的next指针指向null(空)。如下图所示为一个单链表:其中,我们认为A1是A2的前驱元,A2是A1的后继元。对于链表删除操作可以通过修改一个指针来实现,free回收所删除节点内存。对于链表的插入操作需要使用malloc调用从系统得到的一个...原创 2015-10-13 19:43:51 · 1311 阅读 · 0 评论 -
数据结构学习——树的基本分类
自学数据结构已经很久了,使用的教材是《数据结构与算法分析——C语言描述》。现在回过头来再看一遍此书,重新梳理一下数据结构的相关知识。以下是摘自维基百科的一些树的基本分类:无序树:树中任意节点的子节点之间没有顺序关系,这种树称为无序树,也称为自由树;有序树:树中任意节点的子节点之间有顺序关系,这种树称为有序树;二叉树:每个节点最多含有两个子树的树称为二叉树;完全二原创 2015-03-29 20:21:05 · 4663 阅读 · 0 评论 -
数据结构学习——单链表ADT(程序化)
看了一点网上的代码,结合自己对链表的理解。将对链表常用的操作集合程序化如下:#include#includetypedef struct Node{ int Val; struct Node *next;}List;List *list_add(List **p,int Val);//此处是二级指针void List_Print(List *p);List *原创 2015-03-22 21:41:38 · 1097 阅读 · 0 评论 -
数据结构学习——树的基本概念
参考书籍《数据结构与算法分析——C语言描述》连接俩个节点的称为边一棵树是N个节点和N-1条边的集合没有儿子的节点称为树叶(叶)。具有相同父亲的称为兄弟。某路径的长为该路径上边的条数。对任意节点ni,ni的深度为从根到ni的唯一路经长,其中根的深度为0。一棵树的深度等于它最深的树叶深度。(深度是向上而言)ni的高是从ni向下到一片树叶的最长路径的长,一棵树的高等于...原创 2015-04-12 21:18:11 · 697 阅读 · 0 评论 -
数据结构学习——线性表
线性表一般分为顺序结构和链式结构。顺序表里面元素的地址是连续的,如数组;链表里面节点的地址不是连续的,是通过指针连起来的,如单链表;顺序表和链表结构各自的优缺点:(引自百度知道)①顺序结构: 优点:易于查询,索引快 list[n]这样的操作,O(1)复杂度 缺点:扩展性弱,不易删除、添加。②链表结构: 优点:扩展性强,易于删除、添加 缺原创 2015-04-10 16:41:04 · 724 阅读 · 0 评论 -
数据结构学习——二叉堆ADT(程序化)
参考书籍《数据结构与算法分析——C语言描述》关于堆的一些基本概念,可参见小zz的另一篇博文。/*本例程实现的是最小堆,最大堆类似*/#include#include#include#include#define MAX 13typedef struct BHeap{ int Capacity;//堆的最大容量 int Size;//当前堆大小 in原创 2015-04-15 21:30:00 · 1417 阅读 · 0 评论 -
数据结构学习——优先队列(堆)的基本概念
参考书籍《数据结构与算法分析——C语言描述》普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先被访问。(引用百度百科)而堆则正是这种优先队列的具体实现。堆(二叉堆):是一棵完全被填满的二叉树,有可能的例外是在底层,底层上的元素从左到右填入,这样的树被称为完全二叉树。最大堆和最小堆是二叉堆的两种形式。...原创 2015-04-13 20:22:57 · 1021 阅读 · 0 评论 -
数据结构学习——栈的链表实现(程序化)
关于栈的基本概念以及和Catalan数的关系,可以参见我的其他文章参考资料《数据结构与算法分析——C语言描述》#include#include/*栈的链表实现*/typedef struct StackNode{ struct StackNode *next; int data;}StackNode,*Stack;Stack CreateStack(原创 2015-04-08 21:37:06 · 683 阅读 · 0 评论 -
数据结构学习——散列表ADT(程序化)
不知道大家在刚开始看《数据结构与算法分析——C语言描述》散列一章的时候,能不能理解书上的内容,小ZZ看的时候就没怎么看明白。于是就去问度娘,度娘给了我这样一篇文章。里面介绍了散列的基本定义以及常用的实现方法,比较通俗易懂(可能是智商有点拙计)。http://blog.youkuaiyun.com/u010275850/article/details/44963701先看完了这篇博文,然后再看书上的原创 2015-04-12 11:32:27 · 1008 阅读 · 0 评论 -
数据结构学习——二叉查找树ADT(程序化)
参考资料:《数据结构与算法分析——C语言描述》4.3一节#include#include#define N 10typedef struct BinTreeNode{ int data; struct BinTreeNode *left; struct BinTreeNode *right;}BinTreeNode,*BinTree;BinTree in原创 2015-04-07 21:07:40 · 1171 阅读 · 0 评论