zoukankan      html  css  js  c++  java
  • 顺序栈之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;
    }
  • 相关阅读:
    Node.js Net 模块+DNS 模块
    php程序报500错误
    Node.js 工具模块-OS模块+path模块
    Node.js GET/POST请求
    Canvas动画+canvas离屏技术
    Python OS 模块
    Python random 模块
    Python time 模块
    Python 迭代器
    Python 生成器
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3291928.html
Copyright © 2011-2022 走看看