随笔分类 - 数据结构与算法
数据结构学习笔记
摘要:递归 recursion 递归方法就是 自己调用自己,而且每次都传不同的变量。 1.递归要干什么? 2.递归停止的条件是什么? 3.从本层到下层的关系是什么? 调用机制 先自己调用自己,不断在栈中开辟空间; 到达最顶层后,函数运行完毕,销毁,转到后一个函数; 直到到达 main栈,没有方法了 退出程
阅读全文
摘要:栈 Stack 先入后出 栈顶Top (变化的一端),栈底Bottom(固定的一端) pop push isEmpty 应用场景: 子程序调用,处理递归调用,表达式的转换,二叉树的遍历,图的深度优先搜索 1. 数组模拟栈 class myArrayStack{ private int maxSize
阅读全文
摘要:单链表 Linked List链表 是一种有序的列表: 链表是 以结点的方式来存储,为链式存储 每个结点 包含data域,next域(指向下一结点) 链表的 各个结点不一定是连续存储 链表分为 带头节点 和 无头节点 的链表 添加节点: 头插法 与 尾插法 创建节点 使用一个 Node对象来代表结点
阅读全文
摘要:队列是一个有序列表,遵循 先入先出原则;可以用数组/链表实现。 (例如: 银行叫号) 顺序队列 数组模拟 顺序队列: maxSize队列最大容量,头部front,尾部rear,arr[]存数据 思路:【显示队列,添加push,取出pop,查看队首】 front = rear,队列空 rear=max
阅读全文
摘要:概念 用来处理 具有 较多相同元素 的数组:(压缩数组) 稀疏数组共 3列,n+1行(n为原数组有效元素个数) new int[n+1][3] 第一行记录 元素组共有几行几列,共有多少个有效元素 后面n行 则分别记录 有效元素元素的 行,列,值 数组转换 二维数组转稀疏数组: 遍历原始二维数组,得到
阅读全文
摘要:数据结构 数据结构包括: 线性结构 和 非线性结构; 线性结构: 数据与元素之间存在一一对应的线性关系。 存储结构: 顺序存储 (顺序表) 和 链式存储 (链表) 链表中 存储的元素(地址)不一定是连续的,结点存放 数据 及 相邻元素地址信息。 数组,队列,链表,栈 非线性结构: 二维数组,多维数组
阅读全文