华中科技大学计算机学院C++实验报告 实验二Word格式.docx
《华中科技大学计算机学院C++实验报告 实验二Word格式.docx》由会员分享,可在线阅读,更多相关《华中科技大学计算机学院C++实验报告 实验二Word格式.docx(10页珍藏版)》请在冰豆网上搜索。
constintmax;
//栈能存放的最大元素个数
intpos;
//栈实际已有元素个数,栈空时pos=0;
public:
STACK(intm);
//初始化栈:
最多m个元素
STACK(constSTACK&
s);
//用栈s拷贝初始化栈
intsize()const;
//返回栈的最大元素个数max
inthowMany()const;
//返回栈的实际元素个数pos
intgetelem(intx)const;
//取下标x处的栈元素
STACK&
push(inte);
//将e入栈,并返回栈
pop(int&
e);
//出栈到e,并返回栈
assign(constSTACK&
//赋s给栈,并返回被赋值的栈
voidprint()const;
//打印栈
~STACK();
//销毁栈
};
2.需求分析
采用面向对象的C++语言定义整型栈,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。
二、系统设计
概要设计
介绍设计思路、原理。
将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。
三、软件开发
该实验代码我用CodeBlocks进行编写并调试。
四、软件测试
1)总体界面如图1所示:
图1
2)进行入栈操作,如图2所示:
图2
3)进行打印栈操作,如图3所示:
图3
4)进行出栈操作,如图4所示:
图4
5)用下标去元素,如图5所示:
图5
6)栈中实际元素的个数如图6所示:
图6
五、源码和说明
1.文件清单及其功能说明
main.c是源程序
2.exe是可执行文件
2.用户使用说明书
使用CodeBlocks进行编译,或者直接打开可执行文件。
3.源代码
#include<
iostream>
stdlib.h>
stdio.h>
#include<
windows.h>
usingnamespacestd;
int*elems;
intmax;
public:
STACK(intm);
//初始化栈:
STACK(constSTACK&
intsize()const;
inthowMany()const;
intgetelem(intx)const;
STACK&
voidprint()const;
~STACK();
STACK:
:
STACK(intm):
max(m),elems(newint[m])
{
pos=0;
}
s):
max(s.max),elems(s.elems)
intSTACK:
size()const
{
returnmax;
}
getelem(intx)const
if(pos==0)
cout<
<
"
栈为空!
!
\n"
;
else
if(x>
pos)
当前的元素不存在:
returnelems[x];
howMany()const
returnpos;
STACK:
push(inte)
if(pos>
=max)
空间不够!
*(elems+pos)=e;
pos++;
*(elems+pos-1);
return(*this);
e)
栈为空"
e=*(elems+pos-1);
pos-=1;
return(*this);
assign(constSTACK&
s)
pos=s.pos;
voidSTACK:
print()const
最大量:
max<
endl;
当前的元素个数:
pos<
里面的元素为:
for(inti=pos-1;
i>
=0;
i--)
*(elems+i)<
\t"
~STACK()
delete[]elems;
max=0;
voidmenu(void)
\t********************************************************************\n"
\t1.返回栈的最大元素个数max"
\t\t2.返回栈的实际元素个数pos\n"
\t3.取下标x处的栈元素"
\t\t\t4.将e入栈,并返回栈\n"
\t5.出栈到e,并返回栈"
\t\t\t6.赋s给栈,并返回被赋值的栈\n"
\t7.打印栈"
\t\t\t\t8.销毁栈\n"
\t\t\t0.退出程序\n"
intmain()
intm;
intx1;
intop;
intt,x,x2,e,e3,e4;
请输入栈的最大容量m:
cin>
>
m;
STACKst1(m);
STACKst2(st1);
初始化栈:
最多"
m<
个元素完成\n用栈s拷贝初始化栈完成\n"
Sleep(3000);
do
system("
cls"
);
menu();
cout<
请输入序号:
op;
switch(op)
case1:
t=st1.size();
当前栈的大小为:
"
t;
getchar();
getchar();
break;
case2:
x=st1.howMany();
实际元素为:
x<
break;
case3:
请输入想得到的元素的下标:
x1;
x2=st1.getelem(x1);
下表为"
x1<
的元素:
x2;
case4:
请输入想压栈的元素:
e;
st1=st1.push(e);
case5:
st1=st1.pop(e3);
出栈元素为"
e3;
case6:
st2=st2.assign(st1);
case7:
请输入想打印的栈1or2\n"
e4;
if(e4==1)
st1.print();
st2.print();
case8:
请输入想销毁的栈1or2"
inte5;
e5;
if(e5==1)
st1.~STACK();
st2.~STACK();
default:
输入有误请重新输入:
}while(op);
\t\t******谢谢使用******\n"
return0;