栈是一个重要的数据结构,其特性简而言之就是“后进先出”,这种特性在计算机中有着广泛的运用。其实程序员无时无刻不在使用者栈,函数的调用是我们间接使用栈的最好的例子,但是栈在实际中的运用远不止这些,比较经典的应用还包括判断平衡符号、实现表达式的求值,在路径探索中保存路径也是栈的经典应用之一。具体问题具体分析,但是只要满足“后进先出”的特性,都可以应用栈这一数据结构。
栈的基本操作包括入栈(push)、出栈(pop)、判空(isEmpty)等,在此给出一个基于C++的栈的实现。其中,将栈封装为一个类MyStack,基本数据成员包括用于存储访问栈中元素的指针data、栈顶元素索引top,以及用于控制栈大小的size和increment;栈的每一种基本操作都对应一个成员函数,除了上述的三个基本操作外,还包括判满(isFull)、取栈顶元素(getTopElement)和打印栈中元素(printStack)。
MyStack.h
#ifndef _MYSTACK_H_
#define _MYSTACK_H_
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <iomanip>
using namespace std;
#define INISIZE 2
#define INIINCREMENT 2
#define DYNAMIC
typedef int elementType;
class MyStack {
public:
int top;
int size;
int increment;
elementType * data;