栈是限定仅在表头进行插入和删除操作的线性表,有着先进后出的特点(FILO);
现在我来动手实现栈的基本本功能练练手;
定义栈的头文件如下:
- #ifndef CSTOCK_H_
- #define CSTOCK_H_
- const int STOCK_SIZE = 100;//定义栈的大小
- typedef int elemType;//定义栈元素类型,目前仅用int来练手
- class CStock
- {
- public:
- CStock(); //构造函数,构造空栈;
- bool push(elemType x); //进栈操作;
- bool pop(elemType &x); //出栈操作;
- void clear(); //清空栈;
- bool isEmpty(); //判断是否栈空;
- bool isFull(); //判断是否栈满;
- void print(); //打印栈内元素;
- ~CStock();
- private:
- elemType elem[STOCK_SIZE];
- int top;//指向栈顶;
- };
- #endif
实现基本功能如下:
- #include "Stock.h"
- #include<iostream>
- using std::cout;
- using std::endl;
- //构造函数
- CStock::CStock():top(-1)
- {
- }
- //进栈操作,进栈成功返回true,否则返回false;
- bool CStock::push(elemType x)
- {
- if(top == STOCK_SIZE - 1)
- {
- return false;
- }
- elem[++top] = x;
- return true;
- }
- //出栈操作,由形参x将元素带出主调函数,出栈成功返回true,否则返回false;
- bool CStock::pop(elemType &x)
- {
- if(top == -1)
- {
- return false;
- }
- x = elem[top--];
- return true;
- }
- //清空栈,使栈为空;
- void CStock::clear()
- {
- top = -1;
- }
- //判断栈是否为空
- bool CStock::isEmpty()
- {
- return top == -1;
- }
- //判断栈是否栈满
- bool CStock::isFull()
- {
- return top == STOCK_SIZE - 1;
- }
- //打印栈
- void CStock::print()
- {
- for(int i = 0; i <= top; i++)
- {
- cout << elem[i] << "\t";
- if( (i+1) % 5 == 0)
- cout << endl;
- }
- }
- //析构函数
- CStock::~CStock(void)
- {
- }