栈是计算机术语中比较重要的概念,实质上栈便是一段内存区域,可是栈满意必定的特性,那便是只需一个口,具有先入后出的特性,这种特性在计算机中有很广泛的运用。其实在程序员无时无刻不在运用栈,函数的调用是咱们直接运用栈的最好比方,因而能够说栈的一个最重要的运用便是函数的调用。可是栈的运用还不止这些,还有许多,其间几个典型的运转如下:判别平衡符号,完成表达式的求值(也便是中缀表达式转后缀表达式的问题以及后缀表达式求值问题),在路劲探究中完成路劲的保存也能够说是栈的经典运用之一。详细的问题详细分析,只需满意先入后出特性的问题都能找到现成的数据结构—栈。
本文选用C++中的vector完成栈结构,然后使用栈完成判别平衡符号,完成中缀表达式到后缀表达式的转化,并根据栈完成简略的整数加减乘除运算。
首要栈的完成,因为在C++中选用了vector来替代原始的数组操作,这种比较便利的容器能较好的完成数组的功用,当然栈也能够选用链表完成,可是我以为链表没有数组直观,并且在实践的计算机里也是选用接连的存储空间作为栈空间的,因而挑选Vector。首要完成三个操作,push、pop以及为空判别。根本的方法如下:
#ifndef __MYSTACK_H_H_
#define __MYSTACK_H_H_
#include “myvector.h”
namespace myspace
{
template
class Stack
{
public:
Stack(){}
void push(const Object &x)
{
objects.push_back(x);
}
const Object &pop()
{
int len;
if(!isempty())
{
objects.pop_back();
len = objects.size();
return objects[len];
}
}
bool isempty()const
{
return (objects.size() == 0);
}
int size()
{
return objects.size();
}
private:
Vector