您好,欢迎来到吉趣旅游网。
搜索
您的当前位置:首页华中科技大学计算机学院C++实验报告-实验一

华中科技大学计算机学院C++实验报告-实验一

来源:吉趣旅游网


课 程 实 验 报 告

课程名称:面向对象程序设计 实验名称:面向对象的整型栈编程

院 系 : 计算机科学与技术

专业班级 : 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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务