课 程 实 验 报 告
课程名称:面向对象程序设计 实验名称:面向对象的整型栈编程
院 系 : 计算机科学与技术
专业班级 : CS1209班 学 号 : 姓 名 : **** : ***
2014 年 1 月 22 日
一、需求分析
1. 题目要求
整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用纯C语言编程, 然后写一个main函数对栈的所有操作函数进行测试。
struct STACK{ int *elems;
始化p指向
的栈:最多m个元素\");
printf(\"\\ 2.用栈s初始化p指向的栈\\n\"); printf(\"\ 3.返回p指向的栈的实际元素个数pos\"); printf(\"\ 4.将e入栈,并返回p\\n\"); printf(\"\ 5.出栈到e,并返回p\");
printf(\"\\\ 6.赋s给p指的栈,并返回p\\n\"); printf(\"\ 7.打印p指向的栈\"); printf(\"\\\ 8.销毁p指向的栈\\n\"); printf(\"\\\\ 0.退出程序\\n\");
printf(\"\****************************************************************\\n\"); }
typedef struct STACK{ int *elems;
//申请内存用于存放集合的元素
int max; //集合能存放的最大元素个数 int pos; } STACK;
void initSTACK(STACK *const p, int m) {
p->max=m;
//集合实际已有元素个数,集合空时pos=0;
sit=m;
p->elems=(int*)malloc(m*sizeof(int)); p->pos=0; }
void initSTACK(STACK* pset, const STACK&s) {
initSTACK(pset,; int i; if==NULL)
printf(\"s栈为空,请初始化s!!\\n\"); else
for(i=0;i<;i++) {
pset->elems[i]=[i]; pset->pos++; } }
int howMany (const STACK *const p) {
return (p->pos); }
STACK *const push(STACK *const p, int e) {
int m;
if(p->pos==p->max) { printf(\"栈已经为满\\n\");
printf(\"是否扩展栈1为是,0为否\\n\"); scanf(\"%d\
if(m==1) {
p->elems=(int*)realloc(p,(p->pos+1)*sizeof(int)); p->elems[p->pos+1]=e; p->pos=p->pos+1; return (p); } else
printf(\"插入失败\\n\"); } else
{p->elems[p->pos]=e; p->pos=p->pos+1; return (p); } }
STACK *const pop(STACK *const p, int &e) { int n; if(p->pos==0) {
printf(\"栈为空!!\"); } else
e=p->elems[p->pos-1]; p->pos--; return (p); }
STACK *const assign(STACK*const p, const STACK&s) {
p->elems=; p->max=; p->pos=; return p; }
void print(STACK*p) { int i; if(p->pos==0) {
printf(\"栈为空!!\\n\");
printf(\"最大容量为:\%d\ } else {
printf(\"最大容量为:\%d\ printf(\"\\n当前的数:\\n%d\\n\ printf(\"里面的元素为:\\n\"); for(i=p->pos-1;i>=0;i--) {
printf(\"%d\\ } } }
void destroySTACK(STACK*const p)
{
free(p->elems); p->max=0; p->pos=0; if(p->max==0)
printf(\"摧毁栈成功!\"); else
printf(\"摧毁栈未成功\\npos=%d!!\} int main() {
int a[5]={1,2,3,4,5}; STACK *pset=new STACK; STACK s={a,5,5}; int op; int e,m=0; int i; char b; int t; int e1; do
{ system(\"cls\"); menu();
printf(\"请输入序号:\"); scanf(\"%d\
switch(op)
{
case 1:printf(\" \");
printf(\"请输入栈的最大容量m:\"); scanf(\"%d\ initSTACK(pset,m); getchar();getchar(); break;
case 2:
initSTACK(pset,s); getchar();getchar(); break; case 3:
t=howMany(pset);
printf(\"总共为%d个元素\\n\ getchar();getchar(); break; case 4: if(sit==0)
printf(\"请初始化!\\n\"); else
{printf(\"请输入想压栈的元素e:\"); scanf(\"%d\ pset=push(pset,e); }
getchar();getchar();
break;
case 5:
pset=pop(pset,e1);
printf(\"栈顶元素为:\%d\ getchar();getchar();
break; case 6: assign(pset,s); getchar();getchar(); break; case 7: print(pset); getchar();getchar(); break; case 8:
destroySTACK(pset); getchar();getchar(); break; } }while(op);
printf(\"\\\******谢谢使用******\\n\\n\"); return 0; }
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- jqkq.cn 版权所有 赣ICP备2024042794号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务