return NULL; else {
if((p-〉pos)==0) printf(\栈为空\\n”); else {
e=p->elems[(p—>pos)—1]; (p->pos)-—; return p; } } }
STACK *const assign(STACK*const p, const STACK&s) //赋s给p指得栈,并返回p
{
if(p==NULL || &s==NULL) {
return NULL; } else {
free(p->elems); //free(p);
//STACK *p = (STACK *)malloc(sizeof(STACK)); initSTACK(p,s); return p; } }
void print(const STACK*const p) ??//打印p指向得栈 {
int i;
if(p == NULL) {
return;
}
else if(p->pos == 0) {
printf(”栈为空\\n\ } else {
for(i=0;i〈(p->pos);i++) {
printf("%d \>elems[i]); }
printf(\\n”); } }
void destroySTACK(STACK*const p)?//销毁p指向得栈 {
free(p-〉elems); free(p);
printf("栈已销毁\\n"); }
实验二.面向对象得整型栈编程
1。需求分析
1、1题目要求
整型栈就是一种先进后出得存储结构,对其进行得操作通常包括判断栈就是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用面向对象得C++语言定义,请将完成上述操作得所有函数采用C++编程, 然后写一个main函数对栈得所有操作函数进行测试。
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 int getelem (int x) const;?//取下标x处得栈元素 STACK& push(int e); //将e入栈,并返回栈 STACK& pop(int &e); //出栈到e,并返回栈
STACK& assign(const STACK&s); //赋s给栈,并返回被赋值
得栈
void print( ) const;??//打印栈 ~STACK( ); };
//销毁栈
1、2需求分析
采用面向对象得C++语言定义整型栈,对其进行得操作通常包括判断栈就是否为空、向栈顶添加一个整型元素、出栈等。
2、系统设计
2、1概要设计
首先需要定义一个类来实现栈,然后依次实现栈得各个功能,在主函数中给定一个栈然后,然后通过函数调用实现栈得功能、
2、2详细设计
STACK(int m) 功能:初始化栈:最多m个元素 返回值:无
STACK(const STACK&s) 功能:用栈s拷贝初始化栈 返回值:无
int size ( ) const 功能:返回栈得最大元素个数max 返回值:最大元素个数max int howMany ( ) const 功能:返回栈得实际元素个数pos 返回值:元素数目pos
int getelem (int x) const 功能:取下标x处得栈元素 返回值:下标为x得元素 STACK& push(int e) 功能:将e入栈 返回值:栈得引用 STACK& pop(int &e) 功能:出栈到e,并返回栈 返回值:栈得引用
STACK& assign(const STACK&s) 功能:使用栈s给栈p赋值 返回值:栈得引用
void print( ) const 功能:打印栈 返回值:无
~STACK( ) 功能:销毁栈 返回值:无
3.软件开发
在Codeblocks编译环境下,使用C++语言编写。
4、软件测试
测试结果见图2.1
图2、1
5.特点与不足
5、1技术特点
完成了初定目标,无其她特点。
5。2不足与改进得建议
人机交互需要进一步完善。
6、过程与体会
6。1遇到得主要问题与解决方法
由于第一次使用c++面向对象编写程序,开始不明白对象得生成及使用、在与同学老师得沟通与交流中,慢慢学会了编程得方法、