开发者社区> 问答> 正文

C++用类对堆栈的操作,请写详细点

class STACK{
int *const elems; //申请内存用于存放栈的元素
const int max; //栈能存放的最大元素个数
int pos; //栈实际已有元素个数,栈空时pos=0;
public:
STACK(int m); //初始化栈:最多m个元素
STACK(const STACK&s); //用栈s拷贝初始化栈
int size ( ) const; //返回栈的最大元素个数max
int howMany ( ) const; //返回栈的实际元素个数pos
STACK& push(int e); //将e入栈,并返回栈
STACK& pop(int &e); //出栈到e,并返回栈
STACK& assign(const STACK&s); //赋s给栈,并返回被赋值的栈
void print( ) const; //打印栈
~STACK( ); //销毁栈
};
怎么写函数声明,谢谢了

展开
收起
a123456678 2016-03-05 11:19:41 2198 0
1 条回答
写回答
取消 提交回答
  • typedef struct TStack {
    Element *base;
    Element *top;
    int size;
    } *Stack;

    //栈的构造器,创建空栈
    void stackConstructor(Stack &stack){
    stack->base = (Element )malloc(INIT_SIZE sizeof(Element));
    if(!stack->base){
    printf("n为栈分配内存空间失败!n");
    exit(0);
    }
    stack->top = stack->base; //空栈 top == base
    stack->size = INIT_SIZE;
    }

    //是否为空栈
    bool isEmpty(Stack stack){
    if(stack->top == stack->base){
    return true;
    }
    return false;
    }

    //压栈
    bool push(Stack &stack, Element e){
    if(stack->top - stack->base >= stack->size){ //栈满
    stack->base = (Element )realloc(stack->base, (stack->size + INCREMENT_SIZE) sizeof(Element));
    if(!stack->base){
    printf("n为栈扩展内存空间失败!n");
    return false;
    }
    stack->top = stack->base + stack->size;
    stack->size += INCREMENT_SIZE;
    }
    *stack->top++ = e;
    return true;
    }

    //弹栈
    Element pop(Stack stack){
    if(isEmpty(stack)){
    printf("n栈为空,弹栈操作失败!n");
    return ' ';
    }
    return *--stack->top;
    }

    /**

    2019-07-17 18:53:05
    赞同 展开评论 打赏
问答分类:
C++
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载