逆波兰算法是什么?逆波兰算法是通过将“中缀表达式”转化“后缀表达式”(也称为“逆波兰表达式”)的方式,实现一个公式的自动计算。
各类表达式
中缀表达式
前缀表达式
后缀表达式
中缀表达式是一个通用的算术或逻辑公式表示方法。在日常生活中,我们所识所见的表达式通常都是中缀表达式。中缀表达式的操作符是以中缀形式处于操作数的中间(例如:3 + 4),而前缀表达式则是需要将操作符前置(例如:+...
通过对队列的了解,我们知道队列是一种受限的线性表,数据出入的限制为“先进先出”。与队列对应的则是栈,栈也是一种受限的线性表,数据出入的限制为“先进后出”,与队列相同,我们可以称栈为“先进后出线性表”。
为什么栈要遵循“先进后出”的规则呢,因为栈的数据结构就像一个木桶一样,先入栈的数据在木桶底部,后入栈的数据在木桶顶部,在出栈的时候,后入栈的数据将优先被取出,所以造成了“先进后出”的现象。...
数据结构从存储结构上分为顺序存储结构和链式存储结构,顺序存储结构的典型代表就是JAVA/C/C++等语言中的数组,而链式存储结构典型代表就是链表。链表属于链式存储结构,同时也属于线性结构(想了解结果分类的朋友可以查看上一篇博客)。
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称...
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。
队列的特点
遵循先进先出的原则,与栈相反,栈遵循先进后出的原则
队列中通常存在两个指针front和rear,分别称为队头、队尾。数据通常是从队尾入队(插入操作),从队头出队(删...
通过将稀疏矩阵类型的二维数组通过技术手段生成的可以节省内存的数据结构,称为稀疏数组。稀疏数组归根结底还是一个数组,只不过对重复值较多的二维数组进行整理,达到降低存储空间的要求。当然,目标数组需要有一定的要求,下面通过实用的例子说明:
在五子棋游戏中,需要对每一个步骤的棋盘进行存储,定义棋盘为8×8的棋盘,0代表无子,1代表黑子,2代表白子。初始化棋盘后,如果使用原始数组保存棋盘数据,至少...
数据结构概述
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
定义数据结构(data structure)是带有结构特性的数据元素的集合,它研究的是数据的逻辑结构和数据的物理结构以及它们之间的相互关系,并对这种结构定义相适应的运算,...
Markdown是一种轻量级的「标记语言」,通常为程序员群体所用,目前它已是全球最大的技术分享网站 GitHub 和技术问答网站 StackOverFlow 的御用书写格式。Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。
基本语法标题123456# 一级标题## 二级标题### 三级标题#### 四级标题##### 五...
MongoDB 是一款基于分布式文件存储的NoSQL数据库系统,由 MongoDB Inc. 开发(现属于 MongoDB 公司),于 2009 年开源,旨在为海量非结构化数据提供高效、灵活的存储与查询解决方案。
基础核心概念
文档(Document):数据存储的基本单位,类似 JSON 格式,支持嵌套结构。与Mysql中的行对应。
集合(Collection):一组文档的 集合,无固定...
访问者模式(Visitor Pattern)是一种行为型设计模式,其核心思想是将数据结构(元素对象)与对数据的操作(访问逻辑)分离。通过定义独立的访问者类,使得新增操作无需修改元素本身的代码,而是通过扩展访问者类来实现,从而满足 “开闭原则”。访问者模式的本质是将 “数据” 和 “作用于数据的操作” 解耦,使操作集合可独立变化。
访问者模式的组成部分
抽象访问者(Visitor):定义针...
在设计模式中,双重分发(Double Dispatch)是一种通过两次动态类型绑定(运行时多态)来决定方法调用的技术。它允许在程序运行时,根据两个对象的实际类型选择具体的行为,而非编译时的静态类型。这种机制常用于需要根据多个对象类型进行复杂调度的场景,典型应用是访问者模式(Visitor Pattern)。
核心概念单重分发(Single Dispatch)
基于单个对象的运行时类型调用...