
数据结构与算法分析学习笔记
文章平均质量分 78
Shayabean_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
以循环顺序表实现的队列ADT(C语言版)
分为三个文件,分别为头文件,实现文件,测试文件。//约定初始化时rear与front均为0,元素增加一个时,rear++,减少一个是front++//在结构体中添加变量length,以length = 0表示队列为空//引入辅助函数MyAdd()以处理下标循环的问题 头文件:#ifndef MYQUEUE_H_#define MYQUEUE_H_#def原创 2015-03-27 19:55:44 · 1205 阅读 · 0 评论 -
哈希表
头文件:#ifndef HASHTABLE_H#define HASHTABLE_Htypedef int ElemType; //这里的ElemType只能为int,因为选取的散列函数为取模typedef struct{ ElemType * elemArray; int maxsize; int size;}HashTable;void InitHash(HashTab原创 2015-07-23 23:51:00 · 474 阅读 · 0 评论 -
二叉堆
二叉堆:性质为任意一个节点若其右儿子,则其儿子必均大于或小于该节点。(对于同一个堆,大则都大,小则都小,分别称为大根堆,小根堆)堆的几本操作包括插入和删除。插入:先假设将新节点插在整个堆(树)的末尾,然后比较其与其父节点的大小,对于小根堆来说,若其小于其根,则其交换其与根的位置。以新节点当前位置为初始位置,继续比较其与其新根大小,直到其小于其根为止。(整个过程被称为上滤)删除:首先删除原创 2015-07-23 22:46:33 · 810 阅读 · 0 评论 -
赫夫曼树编码实现
赫夫曼编码实现包括以下几个功能:(1) 初始化。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存于文件hfmTree.txt中。(2) 编码。利用已建好的哈夫曼树,对文件ToBeTra.txt中的正文进行编码,然后将结果存入文件CodeFil.txt中。(3) 译码。利用已建好的哈夫曼树将文件CodeFile.txt中的代码进行译码,结果存入文件Textfile.原创 2015-07-23 22:25:45 · 1330 阅读 · 0 评论 -
图的邻接表表示法及深度搜索与广度搜索
图的深度搜索类似于树的先序遍历,稍微修改即可利用递归实现。图的广度搜索类似于树的层序遍历,根据数据出入的特性,可以采用队列来实现。队列不使用容器,而采用之前自己写过的队列稍加修改后来使用。所以文件一共有五个,包括图头文件,图实现文件,队列头文件,队列实现文件,主函数文件。队列头文件:#ifndef MYQUEUE_H_ #define MYQUEUE_H_ #define原创 2015-07-23 22:10:25 · 918 阅读 · 0 评论 -
二叉查找树(C语言实现 )
二叉查找树:若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;它的左、右子树也分别为二叉查找树。在使用递归的时候,假如函数有返回值,记得接收返回值,并且保证函数在每个板块结束后都有return,以防出错。具体见Find、Insert、Delete等函数的实现过程。Find:通过比较根数据域的值和输入参数的大小递归调用原创 2015-05-18 19:01:20 · 585 阅读 · 0 评论 -
AVL树C语言实现
#ifndef AVLTREE_H_#define AVLTREE_H_#define FLOWOVER -1struct AVLTreeADT;typedef struct AVLTreeADT * AVLTree;//根指针,与节点指针本质一样typedef struct AVLTreeADT * AVLNode;//节点指针typedef int ElemType;//数据域原创 2015-05-20 20:59:03 · 704 阅读 · 0 评论 -
十字链表实现矩阵
十字链表实现矩阵的加减乘转置原创 2015-04-29 16:46:36 · 1145 阅读 · 0 评论 -
迷宫求解_栈的应用
#ifndef STACK_FOR_MAZE_H#define STACK_FOR_MAZE_H #include struct Node;typedef struct Node * Stack; //用于声明指向表头的指针 typedef struct Node * PtrToNode; //用于声明指向结构体(节点)的指针 typedef int ElementT原创 2015-04-25 12:27:55 · 602 阅读 · 0 评论 -
串,包括KMP算法(C/C++)
串结构,包括KMP算法原创 2015-04-24 19:31:39 · 832 阅读 · 0 评论 -
基数排序单链表实现(C语言)
头文件:/*基数排序,单链表实现*/#ifndef RADIX_SORT_H#define RADIX_SORT_H#include #define FLOWOVER -1#define LIST_EMPTY -2struct RadixSort;typedef struct RadixSort * List;typedef struct RadixSort * Node;原创 2015-04-05 09:59:18 · 4028 阅读 · 0 评论 -
含表头的链表ADT(C语言版)
表头L为指针,指向一个结构体,L->next表示L指向的结构体中的结构的next域,这个next存储的是链表第一个节点的地址,所以L->next表示链表第一个节点的地址,所以L->next->element表示链表第一个节点element域中的值。当表头L(指针)作为自定义函数参数传入时,L是作为一个临时变量存在的,所以对L进行的操作,并不改变表头的地址本身。但是当L->next作为左值出原创 2015-03-22 23:18:34 · 819 阅读 · 0 评论 -
含表头的栈ADT(C语言版)
表头S为指针,指向一个结构体,S->next表示S指向的结构体中的结构的next域,这个next存储的是栈顶的地址,所以S->next表示栈顶地址,所以S->next->element表示栈顶的元素中的值。具体代码如下:#ifndef MYSTACK_H_#define MYSTACK_H_#include #include #include struct Node;type原创 2015-03-22 22:28:41 · 876 阅读 · 0 评论 -
快排
对于非内部数据类型的对象(在这里指的是string)而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。所以这里(详情见实现文件)(要使用new,而不是malloc原创 2015-07-23 23:55:23 · 755 阅读 · 0 评论