一. 写此系列文章缘由
之所以, 打算用Java语言再把基础的数据结构实现一遍, 原因有以下几点:
- 第一: 我们在学校里学的数据结构大多数都是C语言实现的, 作为要学习和从事Java开发的程序员, 这对Java基础也是一次再学习和提升;
- 第二: 在课堂上所学, 大多数是以概念为主, 导致动手编程的能力严重下降, 理解如何实现和如何编码, 都是同等重要的, 毕竟学习的内容最终还是要学以致用的!
- 第三: 基本的数据结构是后续学习算法的基石, 比如C++中的STL和Java中常用集合框架, 底层实现都是这些数据结构中的知识;
- 第四: 在未来的求职当中, 笔试和面试都少不了数据结构的问题.
哈哈, 废话不多说了, 总之, 一句话 — 数据结构, 包括算法设计, 这对从事软件开发的人员来说, 是非常非常重要的!
二. 相关概念表述
1. 数据结构的定义
来自维基百科的定义
来自数据结构(C语言版, 严蔚敏著)此书的定义
数据结构(data structure)是相互之间存在一种或多种特定关系的数据元素的集合.
简单而言, 因为计算机能快速处理大量的数据, 而如何存储数据就是一个问题, 数据结构就是用来解决这个问题的.
2. 逻辑结构和存储结构的对比
在数据结构中, 有两个概念非常重要, 就是逻辑结构和存储结构. 可能你平时都在用, 但具体的概念不清楚.
逻辑结构: 数据元素之间的逻辑结构.
存储结构: (也称物理结构)数据结构在计算机中的表示.
简单而言, 比如最常用的栈, 是后进先出的结构, 这就是一个逻辑结构; 它存储在计算机中, 即可以用数组实现, 也可以用链表来实现, 所以, 用链表实现的栈, 其中, 这个链表就是一个存储结构.
三. 基本数据结构的分类和列举
根据数据元素之间关系的不同特性, 通常分为三种基本结构:
- 线性结构 (一对一)
- 树形结构 (一对多)
- 图状结构 (多对多)
常见的数据结构列举:
- 数组 (Array)
- 栈 (Stack)
- 队列(Queue)
- 链表(Linked List)
- 树(Tree)
- 图(Graph)
- 堆(Heap)
- 散列表(Hash)
四. 总结
因为此文只是大概介绍我接下来要写的内容, 所以没有编码的部分! 个人博客主页
最后, 非常欢迎各位小伙伴评论和指点我的文章, 如果您觉得写得还不太差劲或者对您有一丁点的帮助, 麻烦动个小手点个赞, 好人萌萌哒, 也很感谢您耐心认真地看完!
本文写于 2017.05.10 13:00