随笔分类 - 算法和数据结构
摘要:前缀、中缀、后缀表达式(逆波兰表达式) 前缀表达式 (1)前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前 (2)举例:(3+4)*5-6对应的前缀表达式就是 - * + 3 4 5 6 从右往左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对他们做相应的计算
阅读全文
摘要:栈 栈的英文为(stack)是一个先入后出(FILO-FIRST IN LAST OUT)的有序列表。栈是限制线性表中元素的插入和删除只能再线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一段,称为栈顶(TOP),另一段为固定的一段,称为栈底(BOTTOM)。根据栈的定义可知,最先
阅读全文
摘要:构建一个单项的环形链表思路 先创建第一个节点,让first指向该节点,并形成环形 后面当我们每创建一个新的节点,就把该节点加入到已有的环形链表中即可。 遍历环形链表 先让一个辅助指针(变量)currentNode,指向first节点 然后通过一个while循环遍历该循环链表即可currentNode
阅读全文
摘要:分析 双向链表的遍历,添加、修改、删除的操作思路 遍历方合单链表一样,只是可以向前、向后查找 添加(默认添加到双向链表的最后) (1)先找到双向链表的最后这个节点 (2)temp.next = new DataNode(); (3)newDataNode.Pre = temp; 修改思路和原理跟单向
阅读全文
摘要:链表是有序列表,它在内存中是存储如下: 上图的表格来模拟链表的结构,其中每一行为一个节点(以第一行举例110,a2,180)。 ‘data域’用来存放数据 ‘next域’用来指向下一个节点。 ‘头指针(也成为头节点)’,150是指向表格中第五行的‘地址为150’的a1节点。而‘next域’110指向
阅读全文
摘要:上一章说到的数组模拟队列存在的问题,问题分析并优化 目前数组使用一次就不能用,没有达到复用的效果 将这个数组使用算法,改进成一个环形的队列 1.数组模拟环形队列 对前面的数组模拟队列的优化,充分利用数组。因此将数组看做是一个环形的。(通过去模的方式来实现即可) 分析说明: 尾索引的下一个为头索引时,
阅读全文
摘要:1.队列介绍 队列是一个有序列表,可以用数组或是链表来实现。 遵循陷入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。 队列有两种实现方式,一种是数组一种是链表。(这里用数组模拟队列) 图中,左一 首先初始化一个数组和两个指针front、rear; front代表队首,rear代表队尾
阅读全文
摘要:1.场景问题 编写五子棋程序中,有存盘和续上盘的功能。 2.问题分析 上面棋盘可用二维数组进行记录,但是二维数组的很多值是默认值0,因此记录了很多没有意义的数据->稀疏数组 3.基本介绍 当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。 稀疏数组的处理方法是: 记录
阅读全文