数据结构
a_fish_lost_dream
这个作者很懒,什么都没留下…
展开
-
游标链表
游标链表不用指针和malloc()、free()函数构建链表。 核心的内容是: 数据储存在一组结构体中。每一个结构体包含有数据及指向下一个结构体的指针。 一个新的结构体可以通过调用malloc而从系统的全局内存得到,并可通过调用free而被释放。 #define Space 10typedef int PtroNode;typedef PtroNode Li原创 2018-01-13 15:12:42 · 329 阅读 · 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 · 126 阅读 · 0 评论 -
搜索二叉树
搜索二叉树//类似创建一个单节点树,但是贴合树的递归定义SearchTree MakeEmpty(SearchTree T){ if(T != NULL) { MakeEmpty(T->Left); MakeEmpty(T->Right); free(T); } return NULL;}...原创 2018-03-02 20:41:23 · 98 阅读 · 0 评论 -
二叉堆
二叉堆堆是一种特殊的队列,能够使用优先级实现更改队列顺序。用完全二叉树实现这样的结构。说是二叉树,其实并没有建立这样一个结构,堆的空间甚至是一个数组。 对于数组中的任一位置i上的元素,其儿子在2i位置上,右儿子在左儿子后的单元(2i + 1)中,它的父亲在[i / 2]上。用这样的数学关系可以将一个二叉树抽象到一个数组中。struct HeapStructtypedef...原创 2018-03-09 21:43:22 · 124 阅读 · 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 · 154 阅读 · 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 · 140 阅读 · 0 评论 -
双向链表
双向链表双向链表的结构与类似。//检验是否只有一个链头int IsEmpty( Position p ){ return ( p->Prior == NULL && p->Next == NULL );}//建造空连头,使得前、后驱都指向NULLList MakeEmpty( List p ){ p = malloc( sizeof( struct D原创 2018-01-05 22:07:26 · 133 阅读 · 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 · 190 阅读 · 0 评论 -
单向链表
单向链表模型就不再描述了,这里主要是分析一下操作。//测试空列表//Return true if L is emptyint IsEmpty( List L ){ return L->Next == NULL;}//测试当前元素是否为最后一个元素//Return true if P is the last position in List//Parameter原创 2018-01-03 18:18:05 · 109 阅读 · 0 评论 -
浅谈散列
浅谈散列通过一个函数,将要储存的值与其储存的地址联系起来,方便进一步的访问。出于这个原因,设计的散列函数(Hash)就要有比较成熟的考虑。但是无论散列函数优秀与否,我们都应该重视冲突的解决。 Hi(X) = (Hash(X) + F(i)) mod TableSize 一般公式,其中X是要储存的元素,i是已发生的冲突次数解决冲突分离链接法使用链表操作,在发生...原创 2018-03-04 15:24:10 · 128 阅读 · 0 评论