⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mystack.h

📁 基于C++实现的数据结构中 顺序栈的类 基本功能
💻 H
字号:
#pragma once
// 基于 C语言 实现的顺序栈
#include <malloc.h>      //内存分配 头文件
#include<iostream>
#include<stdexcept>  // 抛异常的头文件 是runtime_error 的
//#include<new>

template<class T>
class MyStack{
                                      // LIFO 对象
public :
     MyStack(int MyStackSize = 100);
    
    bool ClearStack();                     //吧S置为空栈

	bool StackEmpty();                     //若栈S为空 返回TRUE, 否则返回FALSE

    int StackLength();                        //返回S的元素个数,==站的长度

	bool GetTop(T &e);              //若栈不空,则用e返回S的栈顶元素,并返回OK;否则回ERROR

	bool Push(T e);                //插入元素e为新的栈顶元素 俗称 压栈

	bool Pop(T &e);                 //若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK 否则ERROR


	~MyStack () {delete [] base;}
private:
    
	int stacksize;       //当前已分配储存空间 艺元素为单元

	int top;              // 栈顶指针下标

	T* base;            //再战构造之前和销毁之后,base的值为NULL

	static const int STACKINCREMENT=20;
} ;


template<class T> MyStack<T>::MyStack(int MyStackSize)
           {// MyStack 类构造函数
             base = new T[MyStackSize];
			 top=0; 
			 stacksize = MyStackSize;
           }

template<class T> bool MyStack<T>::ClearStack()
{    
     	top=0;
	    return true;
}

template<class T> bool MyStack<T>::StackEmpty()
{
	return (top==0);
}

template<class T> int MyStack<T>::StackLength()
{
	return top;
}

template<class T> bool MyStack<T>::GetTop(T &e)
{
	if(top==0)  return false;
	e=*(base+top-1);
	return true;
}

template<class T> bool MyStack<T>::Push( T e)
{
	if(top>=stacksize) 
	{
		try{                                                      // 异常处理
		base=(T*)realloc(base,(stacksize+STACKINCREMENT)*sizeof(T));
		}catch(std::bad_alloc &ex) {
			std::cout<<"创建内存失败"<<std::endl<<ex.what()<<std::endl;  
			      abort();    //中止
	                          }
		top=stacksize+1;
		stacksize+=STACKINCREMENT;
		}
	*(base+top++)=e;
	return true;
}

template<class T> bool MyStack<T>::Pop( T& e)
{
	if(top==0) return false;
	e=*(base+(--top));
	return true;
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -