华中科技大学计算机学院C实验报告实验三.docx

上传人:b****6 文档编号:7086670 上传时间:2023-01-17 格式:DOCX 页数:10 大小:39.37KB
下载 相关 举报
华中科技大学计算机学院C实验报告实验三.docx_第1页
第1页 / 共10页
华中科技大学计算机学院C实验报告实验三.docx_第2页
第2页 / 共10页
华中科技大学计算机学院C实验报告实验三.docx_第3页
第3页 / 共10页
华中科技大学计算机学院C实验报告实验三.docx_第4页
第4页 / 共10页
华中科技大学计算机学院C实验报告实验三.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

华中科技大学计算机学院C实验报告实验三.docx

《华中科技大学计算机学院C实验报告实验三.docx》由会员分享,可在线阅读,更多相关《华中科技大学计算机学院C实验报告实验三.docx(10页珍藏版)》请在冰豆网上搜索。

华中科技大学计算机学院C实验报告实验三.docx

华中科技大学计算机学院C实验报告实验三

 

课程实验报告

 

课程名称:

面向对象程序设计

实验名称:

面向对象的整型栈编程

 

院系:

计算机科学与技术

专业班级:

CS1209班

学号:

姓名:

指导教师:

李春花

 

2015年01月22日

 

1、需求分析

1.题目要求

整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。

整型栈类型及其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有函数采用C++编程,然后写一个main函数对栈的所有操作函数进行测试。

classSTACK{

int*constelems;//申请内存用于存放栈的元素

constintmax;//栈能存放的最大元素个数

intpos;//栈实际已有元素个数,栈空时pos=0;

public:

STACK(intm);//初始化栈:

最多m个元素

STACK(constSTACK&s);//用栈s拷贝初始化栈

virtualintsize()const;//返回栈的最大元素个数max

virtualoperatorint()const;//返回栈的实际元素个数pos

virtualintoperator[](intx)const;//取下标x处的栈元素

virtualSTACK&operator<<(inte);//将e入栈,并返回栈

virtualSTACK&operator>>(int&e);//出栈到e,并返回栈

virtualSTACK&operator=(constSTACK&s);//赋s给栈,并返回被赋值的栈

virtualvoidprint()const;//打印栈

virtual~STACK();//销毁栈

};

2.需求分析

采用面向对象的C++语言定义,构建整型栈并对其进行判断栈是否为空、向栈顶添加一个整型元素、出栈等操作。

2、系统设计

概要设计

用结构实现栈,此结构包括指向栈的指针,最大容量,和当前的元素个数等三个元素。

要求是栈的元素是栈元素类型是整形。

的局部数据结构。

3、软件开发

使用CodeBlocks进行编写并进行调试。

4、软件测试

1)总的界面如图1所示:

图1

2)进行入栈操作,如图2所示:

图2

3)返回栈的最大元素个数,如图3所示:

图3

4)查看栈的实际元素个数,如图4所示:

图4

5)进行出栈操作,如图5;并查看出栈后的元素个数,如图6所示:

图5

图6

6)用下标取出栈中的元素,如图7所示:

图7

7)打印栈,如图8所示:

图8

8)销毁栈,如图9所示:

图9

 

5、过程和体会

1.遇到的主要问题和解决方法

刚开始对运算符重载有很大的质疑,并且不会怎么使用运算符重载。

后来经过跟同学们的交流顺利的完成了实验所要求的内容。

2.课程设计的体会

通过本次实验让我对C++中对整型栈的创建和对其进行操作有了更进一步的了解。

6、源码和说明

1.文件清单及其功能说明

main.c是源程序

frdds.exe为可执行程序

2.用户使用说明书

使用CodeBlocks进行编译。

3.源代码

#include

#include

#include

#include

usingnamespacestd;

classSTACK{

int*constelems;//申请内存用于存放栈的元素

constintmax;//栈能存放的最大元素个数

intpos;//栈实际已有元素个数,栈空时pos=0;

public:

STACK(intm);//初始化栈:

最多m个元素

STACK(constSTACK&s);//用栈s拷贝初始化栈

virtualintsize()const//返回栈的最大元素个数max

{

returnmax;//返回栈的最大元素个数max

}

virtualoperatorint()const//返回栈的实际元素个数pos

{

returnpos;//返回栈的实际元素个数pos

}

virtualintoperator[](intx)const//取下标x处的栈元素

{

returnelems[x];

}

virtualSTACK&operator<<(inte)//将e入栈,并返回栈

{

if(pos>=max)

{

cout<<"栈已满!

";

}

else

{

*(elems+pos)=e;

pos++;

}

return(*this);

}

virtualSTACK&operator>>(int&e)//出栈到e,并返回栈

{

if(pos==0)

{

cout<<"栈为空!

";

}

else

{

e=*(elems+pos-1);

pos-=1;

}

return(*this);

}

virtualSTACK&operator=(constSTACK&s)//赋s给栈,并返回被赋值的栈

{

pos=s.pos;

return(*this);

}

virtualvoidprint()const//打印栈

{

cout<<"最大量:

"<

cout<<"当前的元素个数"<

cout<<"里面的元素为:

";

for(inti=pos-1;i>=0;i--)

{

cout<<*(elems+i)<<"\t";

}

}

virtual~STACK()//销毁栈

{

delete[]elems;

if(elems==0){cout<<"销毁没成功!

"<

elsecout<<"销毁成功!

"<

}

};

STACK:

:

STACK(intm=20):

max(m),elems(newint[m])

{

pos=0;

}

STACK:

:

STACK(constSTACK&s):

max(s.max),elems(s.elems)

{

pos=0;

}

voidmenu(void)

{

cout<<"\t***************************************************\n";

cout<<"\t1.返回栈的最大元素个数max";

cout<<"\t2.返回栈的实际元素个数pos\n";

cout<<"\t3.取下标x处的栈元素";

cout<<"\t\t4.将e入栈,并返回栈\n";

cout<<"\t5.出栈到e,并返回栈";

cout<<"\t\t6.赋s给栈,并返回被赋值的栈\n";

cout<<"\t7.打印栈";

cout<<"\t\t\t8.销毁栈\n";

cout<<"\t\t\t0.退出程序\n";

cout<<"\t**************************************************\n";

}

intmain()

{

intm;

intx1;

intop;

intt,x,x2,e,e3,e4;

cout<<"请输入栈的最大容量m:

";

cin>>m;

STACKst1(m);

STACKst2(st1);

cout<<"初始化栈:

最多m个元素完成,用栈s拷贝初始化栈完成.\n";

Sleep(3000);

do

{

system("cls");

menu();

cout<<"请输入序号:

";

cin>>op;

switch(op)

{

case1:

t=st1.size();

cout<<"当前栈的大小为:

"<

getchar();getchar();

break;

case2:

x=st1;

cout<<"实际元素为:

"<

getchar();getchar();

break;

case3:

cout<<"请输入想得到的元素的下标:

"<<"\n";

cin>>x1;

x2=st1[x1];

cout<<"下表为"<

"<

getchar();getchar();

break;

case4:

cout<<"请输入想压栈的元素:

";

cin>>e;

st1<

getchar();getchar();

break;

case5:

st1>>e3;

cout<<"出栈元素为"<

getchar();getchar();

break;

case6:

st2=st1;

getchar();getchar();

break;

case7:

cout<<"请输入想打印的栈1or2:

";

cin>>e4;

if(e4==1)

{

st1.print();

}

else

st2.print();

getchar();getchar();

break;

case8:

cout<<"请输入想销毁的栈1or2";

inte5;

cin>>e5;

if(e5==1)

st1.~STACK();

else

st2.~STACK();

getchar();getchar();

break;

default:

cout<<"输入有误请重新输入:

";

break;

}

}while(op);

cout<<"\t\t******谢谢使用!

!

!

******\n"<

return0;

}

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1