用开源项目死磕数据结构!
程序员的双手是魔术师的双手,他们把枯燥无味的代码变成了丰富多彩的软件。——《疯狂的程序员》
前言
数据结构想必大家都不会陌生,对于一个成熟的程序员而言,熟悉和掌握数据结构和算法也是基本功之一。数据结构本身其实不过是数据按照特点关系进行存储或者组织的集合,特殊的结构在不同的应用场景中往往会带来不一样的处理效率。
数据结构与算法Java实现版
项目说明
本项目用Java实现了常见的数据结构与算法,项目结构使用某一数据结构为接口,分别用来连续存储和链式存储进行实现.并包含完整的注释信息.方便阅读与学习.
主要内容
常用数据结构及其算法的Java实现,包括但不仅限于以下部分:
- 线性表
- 顺序存储结构实现
- 链表存储结构实现
- 栈
- 顺序存储结果实现
- 链式存储结构实现
- 队列
- 链式存储结构实现
- 线性存储结构实现
- 串
- 顺序存储结构
- 链式存储结构
- 常见的匹配算法
- 树
- 二叉树存储结构
- 前中后序遍历
- 赫夫曼编码
- 图
- 查找算法
- 顺序表查找
- 有序表查找
- 线性索引查找
- 二叉排序树
- 平衡二叉树
- 多路查找树
- 散列表(哈希表)查找
- 排序算法
- 冒泡排序
- 简单选择排序
- 直接插入排序
- 希尔排序
- 堆排序
- 归并排序
- 快速排序
- 等等......
代码规范
该项目严格遵循Java语言的编码规范,并且有很详细的注释
并且每种数据结构都定义了接口,通过数组方式和链表方式分别实现,很适合大家学习.
下方为用数组实现的线性表的部分代码,供大家预览.
/**
* 默认容量
*/
private static final int DEFAULT_CAPACITY = 10;
private Object [] elementData;
/**
* 默认扩容倍数
*/
private static final int DEFAULT_EXPAND_MULTIPLE = 2;
/**
* 元素数量
*/
private int size;
/**
* 创建默认容量(10)的数组线性表
*/
public ArrayList() {
elementData = new Object[DEFAULT_CAPACITY];
size = 0;
}
/**
* 创建指定大小的数组线性表
* @param size 指定大小
* @throws Exception 若传入的容量大于9999或者小于0则抛出此异常
*/
public ArrayList(int size) throws Exception {
if(size <= 0 || size > 9999) throw new Exception("容量数据错误!");
elementData = new Object[size];
}
参考书籍
书名 |
作者 |
译 |
出版社 |
ISBN |
---|---|---|---|---|
《大话数据结构》 |
程杰 |
|
清华大学出版社 |
978-7-302-25565-9 |
《数据结构与算法分析Java语言描述》 |
马克思·艾伦·维斯 |
陈越 |
机械工业出版社 |
978-7-111-52839-5 |
《Java编程思想》 |
Bruce Eckel |
陈昊鹏 |
机械工业出版社 |
978-7-111-2138-6 |
项目说明
目前,项目并没有完成,仍在继续更新!