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

作者:用户 来源:互联网 浏览:403 次 时间:2016-02-18 14:21:31

constc++堆栈

const-C++用类对堆栈的操作,请写详细点 - 摘要: C++用类对堆栈的操作,请写详细点classSTACK{int*constelems;//申请内存用于存放栈的元素constintmax;//栈能存放的最大元素个数intpos;//栈实际已有元素个数

问题描述

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( ); //销毁栈
};

怎么写函数声明,谢谢了

解决方案

函数声明不都有了么?你该写函数实现啦。

参考代码

/**
?<!--
?File : stack.h
?Author : fancy
?Email : fancydeepin@yeah.net
?Date : 2013-02-03
?--!> */ #include #include #include #define Element char #define INIT_SIZE 10 #define INCREMENT_SIZE INIT_SIZE / 2

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;
}

/**
?<!--
?File : Stack.cpp
?Author : fancy
?Email : fancydeepin@yeah.net
?Date : 2013-02-03
?--!> */ #include ""stack.h""

int main() {
Stack stack;
stackConstructor(stack);
push(stack 'f');
push(stack 'a');
push(stack 'n');
push(stack 'c');
push(stack 'y');
printf(""%c"" pop(stack));
printf(""%c"" pop(stack));
printf(""%c"" pop(stack));
printf(""%c"" pop(stack));
printf(""%c"" pop(stack));
//output[result]: ycnaf
return 0;

}

解决方案二:

class STACK{
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( ); //销毁栈
private:
int *const elems; //申请内存用于存放栈的元素
const int max; //栈能存放的最大元素个数
int pos; //栈实际已有元素个数,栈空时pos=0;
}

解决方案三:

啥意思?直接不知道要问什么

【云栖快讯】诚邀你用自己的技术能力来用心回答每一个问题,通过回答传承技术知识、经验、心得,问答专家期待你加入!  详情请点击
云栖社区(yq.aliyun.com)为您免费提供const-C++用类对堆栈的操作,请写详细点相关信息,包括 constc++堆栈 的信息 ,所有const-C++用类对堆栈的操作,请写详细点相关内容均不代表云栖社区的意见! 该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_98025,您可以点击const-C++用类对堆栈的操作,请写详细点-手机站访问。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

现在注册,免费体验40+云产品,及域名优惠!

云服务器9.9元/月,大学必备

热点导航