常见的线性结构
目录 前言 数组 数组介绍 自定义数组 实现数组的增删改查方法 动态数组 时间复杂度分析 栈 栈介绍 定义栈接口 基于数组实现栈的基本操作 使用栈实现“括号匹配”问题 队列 队列介绍 定义队列接口 数组队列 循环队列 数组队列和循环队列的性能比较 链表:最基础的动态数据结构 链表介绍 实现链表的增删改查操作 通过自定义链表实现栈 通过自定义链表实现队列 递归 前言 本篇博客主要是记录手写这些这数据结构的底层实现,加深对线性结构的理解,实现自己的一个小型数据结构库,也会进行简单的时间复杂度分析,对不同的实现进行比较和优化,即侧重于代码实现。由于数据结构是实践性比较强的一个科目,希望大家在看这篇博客时,自己也去写一下代码,看一下运行结果是不是自己想要的,我也会贴出我的运行结果来进行分析。 数组 数组介绍 数组是在内存中存储相同数据类型的连续的空间,最大的优点:查询快速。 数组最好应用于“索引有语意”的情况,例如索引代表学生学号,我们可以根据学号获取这个学生对象的信息。但并非所有有语意的索引都适用于数组,例如身份证号,我们不可能拿身份证号作为索引,因为身份证长度是18位数,而且身份证号也不是连续的,这样会浪费很大的内存空间。 数组也可以处理“索引没有语意”的情况,若索引没有语意时,如何表示没有元素?我们应该如何去添加元素、如何去删除元素呢?为了解决这些问题