顺序栈之C++实现

         顺序栈就是用顺序表(数组)实现的栈。其组织形式如下图所示:

           下面介绍下我用C++实现的顺序栈,在VC6下调试通过。不足之处还请指正。

1、文件组织

2、ss.h栈类的声明及宏的定义

#ifndef _SS_H_
#define _SS_H_

typedef int dataType;
#define maxSize 100

class stack
{
public:
	stack();
	//~stack();
	void push(dataType var);    //压栈
	void pop();					//出栈,什么都不返回
	dataType stackTop();		//返回栈顶数据,栈顶不变化
	bool isEmpty();				//空则返回true,否则返回false
	bool isFull();				//满则返回true,否则返回false

private:
	dataType s[maxSize];  //顺序表组成的栈空间
	int top;              //栈顶指针
};

#endif

3、ss.cpp栈类成员函数的定义

#include "ss.h"

stack::stack()
{
	top = -1;				//表示栈为空
}

void stack::push(dataType var)
{
	s[++top] = var;         //入栈
}

void stack::pop()
{
	--top;                   //出栈只要将指针向下移
}

dataType stack::stackTop()
{
	return s[top];           //s[top]为栈顶数据
}

bool stack::isEmpty()
{
	return top == -1;         //top为-1时栈为空
}

bool stack::isFull()
{
	return top == maxSize-1;  //top为maxSize时栈为满
}


4、mian.cpp

#include <iostream>
#include "ss.h"
using namespace std;

int main()
{
	stack exp;
	
	//只有栈未满才能压栈
	if(!exp.isFull())
	{
		exp.push(1);
	}

	//只有栈非空才能取栈顶元素和出栈
	if(!exp.isEmpty())
	{
		cout<<"栈顶数据是: "<<exp.stackTop()<<endl;
		exp.pop();
	}

	if(exp.isEmpty())
	{
		cout<<"栈为空!"<<endl;
	}

	return 0;
}
原文地址:https://www.cnblogs.com/keanuyaoo/p/3291928.html