栈相关算法

-括号匹配

int match(char * cs, int size);

1.做一个空栈。读入字符直到文件尾。

2.对读入的字符进行判断,

2.1如果字符是一个左括号,则入栈;

2.2如果字符是一个右括号,如果栈空或弹出的左括号不匹配,则匹配失败;

2.3输入结束,如果栈非空,则匹配失败,否则匹配成功。

-计算后缀表达式的值(假定后缀表达式正确)

int postfixValue(char * expression, int size);

1.做一个空栈,读入字符直到文件尾。

2.对读入的字符进行判断,

2.1如果是数字,则入栈;

2.2如果是运算符,则弹出两个数字并将计算结果入栈。

3.计算完毕后,最后弹出的值即为最终计算结果。

-中缀表达式转后缀表达式(假定中缀表达式正确)

void convertExpression(char * expression, int size);

1.做一个空栈,读入字符直到文件尾。

2.对读入的字符进行判断,

2.1如果是操作数,则直接输出;

2.2如果是运算符(+-*/)

2.2.1如果栈不空,并且栈顶元素的优先级大于当前运算符优先级,则输出栈中所有优先级大于当前元素的运算符;

2.2.2当前元素入栈;

2.2.3上述四个运算符优先级均大于'('优先级。

2.3如果是运算符'(',则入栈。

2.4如果是运算符')',则出栈所有'('之前的栈元素,'('出栈,但不加入最终表达式。

时间: 2024-08-11 01:36:15

栈相关算法的相关文章

数组大小为2n+1-数组相关算法java,找出需求的数据

问题描述 数组相关算法java,找出需求的数据 存在一个数组,数组大小为2n+2,里面有n对个数,例如:1,2,2,3,4,1.(数组是无序的,考虑排序的话一定会超过限制)这,6个数中的单独的数就是3,4,要你用你能想到的最高效率的方法找出来 解决方案 如果数组是连续的则可以用byte[] b = new byte[n+1];然后遍历一遍原数组,将遍历的值放入b的下标中计数,最后为1的那个下标表示数据是单独的. 这样的话总最多做3n+3次操作就能找全单独的数. 如果数组里面的数是无规律的,那么可

赛车游戏相关算法请教

问题描述 赛车游戏相关算法请教 在赛车游戏中,远处的画面根据车速逐渐靠近的算法怎么写呢?就是根据车速画面由远至近的大小变化如何控制? 解决方案 我猜测是根据速度算出,图片显示的数序关系,完后投影映射?

Java编程中快速排序算法的实现及相关算法优化_java

时间复杂度 平均情况:O(nlgn) 最坏情况:O(n*n),发生在当数据已经是排序状态时 快排算法的基本原理 1.从数据中选取一个值a[i]作为参考 2.以a[i] 为参考,将数据分成2部分:P1.P2,P1中的数据全部≤a[i],P2中的数据全部>a[i],数据变为{{P1}{a[i]}{P2}} 3.将P1.P2重复上述步骤,直到各部分中只剩1个数据 4.数据完成升序排列 基本示例: 原始数据: {3,9,8,5,2,1,6} 第1步:选取第1个数据:3 第2步:将数据分成2部分,左边≤3

图像分割相关算法

前言 图像分割(Image Segmentation)指的是将数字图像细分为多个图像子区域的过程,在OpenCv中实现 了三种跟图像分割相关的算法,它们分别是:分水岭分割算法.金字塔分割算法 以及均值漂移分割算法.它们的使用过程都很简单,下面的文章权且用于记录, 并使该系列保持完整吧. 分水岭分割算法 分水岭分割算法需要您或者先前算法提供标记,该标记用于指定哪些大致区 域是目标,哪些大致区域是背景等等:分水岭分割算法的分割效果严重依赖于提 供的标记.OpenCv中的函数cvWatershed实现

浅谈算法和数据结构 十二 无向图相关算法基础

从这篇文章开始介绍图相关的算法,这也是Algorithms在线课程第二部分的第一次课程笔记. 图的应用很广泛,也有很多非常有用的算法,当然也有很多待解决的问题,根据性质,图可以分为无向图和有向图.本文先介绍无向图,后文再介绍有向图. 之所以要研究图,是因为图在生活中应用比较广泛: 无向图 图是若干个顶点(Vertices)和边(Edges)相互连接组成的.边仅由两个顶点连接,并且没有方向的图称为无向图. 在研究图之前,有一些定义需要明确,下图中表示了图的一些基本属性的含义,这里就不多说明. 图的

单链表相关算法

[1]打印单链表,void PrintList(List list); 使用一个指针遍历所有链表节点. [2]两个升序链表,打印tarList中的相应元素,这些元素的序号由SeqList指 定,void PrintLots(List tarList, List seqList); 使用两个指针分别遍历两个链表,每次取出序列链表的一个序号后,根据该 序号,到达目标链表指定节点. [3]两个升序链表交集 ,List Intersect(List l1, List l2); [4]两个升序链表并集 ,

数据结构与算法09 之图

    在计算机程序设计中,图是最常用的结构之一.图是一种与树有些相像的数据结构,实际上,从数学意义上说,树是图的一种.然而在计算机程序设计中,图的应用方式与树不同.         前面讨论的数据结构都有一个框架,这个框架都是由相应的算法设定的.比如说,二叉树是那样一个形状,就是因为那样的形状使它更容易搜索数据和插入新数据,树的边表示了从一个节点到另一个节点的快捷方式.而图通常有一个固定的形状,这是由物理或抽象的问题所决定的.比如说,图中节点表示城市,而边表示城市间的航班线,这些都是固定的.即

计算几何算法概览

计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题.作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法.在现代工程和数学领域,计算几何在图形学.机器人技术.超大规模集成电路设计和统计等诸多领域有着十分重要的应用.在本文中,我们将对计算几何常用的基本算法做一个全面的介绍,希望对您了解并应用计算几何的知识解决问题起到帮助. 二.目录 本文整理的计算几何基本概念和常用算法包括如下内容:  矢量的概念

计算几何常用算法概览

一.引言 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简单的通用解决方案,比如几何问题.作为计算机科学的一个分支,计算几何主要研究解决几何问题的算法.在现代工程和数学领域,计算几何在图形学.机器人技术.超大规模集成电路设计和统计等诸多领域有着十分重要的应用.在本文中,我们将对计算几何常用的基本算法做一个全面的介绍,希望对您了解并应用计算几何的知识解决问题起到帮助. 二.目录 本文整理的计算几何基本概念和常用算法包括如下内容: 矢量