Data Structures and Algorithm Analysis
数据结构与算法学习代码及笔记
每个算法的代码:C语言代码肯定存在,Java代码可能存在
暂时学习内容范围为:
**大学mooc---数据结构,陈越教授、何钦铭教授,国家精品课程
《大话数据结构》---程杰,清华大学出版社
《数据结构与算法分析》---[美] Mark Allen Weiss,冯舜玺 译
编码:UTF-8, I hate GBK
运行环境:建议使用gcc编译,c99模式运行
为了避免因英文命名导致难以找到对应源代码的问题,这里给出目录
因为有些算法实在是不知道怎么分类,直接放在一级目录下
此外,每一个文件夹下表示一种数据结构相关,或特定类型的算法
具体命名对应如下:
本目录所有目录文件均只提供C语言版目录,相关的Java实现有无均不确定,除此之外,如果个人觉得写得可能有点复杂或需要补充理解,可能提供其他摘录版本,摘录版本会有相应带括号的文件名后缀,如linked_list_大话数据结构.c,但是这些文件不记录至目录中
文件名
文件内容
array.c
可变数组
arraylist.c
顺序存储方式,数组实现
linkedlist.c
链表实现方式
stack_using_array.c
栈,顺序存储方式实现
double_stack.c
栈,两栈共享空间
stack_using_linked_list.c
栈,链表方式实现
queue_using_arry.c
队列,顺序存储方式实现
queue_using_linked_list.c
队列,链表方式实现
文件名
文件内容
string.c
字符串的一种实现方式
KMP_Algorithm.c
子串查找的多种方式,包括KMP查找及改进
文件名
文件内容
binary_tree_using_array.c
二叉树,顺序存储方式实现
binary_tree_using_pointer.c
二叉树,指针方式实现
binary_search_tree.c
BST:二叉搜索(查找)树
AVL_Tree.c
平衡二叉树
heap.c
堆
Huffman_tree.c
哈夫曼树(最优二叉树,含哈夫曼编码)
threaded_binary_tree.c
线索二叉树
文件名
文件内容
graph_using_adjecent_matrix.c
图,邻接矩阵实现方式(含DFS和BFS)
graph_using_adjecent_list.c
图,邻接表实现方式(含DFS和BFS)
MST_adjecent_matrix.c
最小生成树,邻接矩阵实现方式(含Prim算法和Kruskal算法)
shortest_path_adjecent_matrix.c
最短路径,邻接矩阵实现方式(含dijstra算法和Floyd算法)
topo_sort_adjecent_list.c
拓扑排序,邻接表实现方式
critical_path_adjecent_list.c
关键路径,邻接表实现方式
文件名
文件内容
bubble_sort.c
冒泡排序(含改进方式)
insert_sort.c
插入排序
select_sort.c
选择排序
shell_sort.c
希尔排序
heap_sort.c
堆排序
merge_sort.c
归并排序(递归和非递归方式)
quick_sort.c
快速排序
文件名
文件内容
sequential_search.c
顺序查找(含使用哨兵方式)
binary_search.c
二分法查找(含插值查找&斐波那契查找)
hash_table.c
散列查找(哈希表)
文件名
文件内容
fibonacci.c
斐波那契数列(含为递归方式)
max_subsequence.c
最大子列和问题的n种求解方式
gcd.c
求最大公约数的若干种方法(含辗转相除法、更相减损法及其改进)