数据结构
a_fish_lost_dream
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
游标链表
游标链表 不用指针和malloc()、free()函数构建链表。 核心的内容是: 数据储存在一组结构体中。每一个结构体包含有数据及指向下一个结构体的指针。 一个新的结构体可以通过调用malloc而从系统的全局内存得到,并可通过调用free而被释放。 #define Space 10 typedef int PtroNode; typedef PtroNode Li原创 2018-01-13 15:12:42 · 390 阅读 · 0 评论 -
单向链表
单向链表 模型就不再描述了,这里主要是分析一下操作。 //测试空列表 //Return true if L is empty int IsEmpty( List L ) { return L->Next == NULL; } //测试当前元素是否为最后一个元素 //Return true if P is the last position in List //Parameter原创 2018-01-03 18:18:05 · 182 阅读 · 0 评论 -
栈
栈 链表实现 //建立一个表头 Stack CreateStack(void) { Stack S = malloc(sizeof(struct Node)); if(S == NULL) { printf("Out of Space\n"); exit(EXIT_FAILURE); } S->Next = NUL原创 2018-01-16 08:24:07 · 269 阅读 · 0 评论 -
双向链表
双向链表 双向链表的结构与类似。 //检验是否只有一个链头 int IsEmpty( Position p ) { return ( p->Prior == NULL && p->Next == NULL ); } //建造空连头,使得前、后驱都指向NULL List MakeEmpty( List p ) { p = malloc( sizeof( struct D原创 2018-01-05 22:07:26 · 186 阅读 · 0 评论 -
循环链表
循环链表 环状的双向链表。 //判断是否为空 int IsEmpty(List p) { return (p->Next == p && p->Prior == p); //创建一个空表头 List MakeEmpty(List p) { p = malloc(sizeof(struct CycleChain)); p->Next = p; p->Pr原创 2018-01-09 21:48:01 · 209 阅读 · 0 评论 -
队列
队列 数组实现 //检验是否为空 int IsEmpty(Queue Q) { return Q->Size == 0; } //检验是否满了 int IsFull(Queue Q) { return Q->Size == Q->Capacity - 1; } //创建一个队列 Queue CreateQueue(int Maxelements) { Q原创 2018-01-18 20:58:20 · 222 阅读 · 0 评论 -
二叉堆
二叉堆 堆是一种特殊的队列,能够使用优先级实现更改队列顺序。用完全二叉树实现这样的结构。 说是二叉树,其实并没有建立这样一个结构,堆的空间甚至是一个数组。 对于数组中的任一位置i上的元素,其儿子在2i位置上,右儿子在左儿子后的单元(2i + 1)中,它的父亲在[i / 2]上。 用这样的数学关系可以将一个二叉树抽象到一个数组中。 struct HeapStruct typedef...原创 2018-03-09 21:43:22 · 180 阅读 · 0 评论 -
搜索二叉树
搜索二叉树 //类似创建一个单节点树,但是贴合树的递归定义 SearchTree MakeEmpty(SearchTree T) { if(T != NULL) { MakeEmpty(T->Left); MakeEmpty(T->Right); free(T); } return NULL; } ...原创 2018-03-02 20:41:23 · 165 阅读 · 0 评论 -
AVL树
AVL树 在BST的基础上添加平衡操作,使得最坏的情况得到优化。 static int Height(Position P) { if(P == NULL) { return -1;//默认空节点的高度是-1,一种约定 } else { return P->Height; } } AVL树的插入有四种基...原创 2018-03-02 20:55:39 · 199 阅读 · 0 评论 -
浅谈散列
浅谈散列 通过一个函数,将要储存的值与其储存的地址联系起来,方便进一步的访问。出于这个原因,设计的散列函数(Hash)就要有比较成熟的考虑。但是无论散列函数优秀与否,我们都应该重视冲突的解决。 Hi(X) = (Hash(X) + F(i)) mod TableSize 一般公式,其中X是要储存的元素,i是已发生的冲突次数 解决冲突 分离链接法 使用链表操作,在发生...原创 2018-03-04 15:24:10 · 190 阅读 · 0 评论
分享