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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程实验报告

课程名称:面向对象程序设计

实验名称:面向对象的整型栈编程

院系:计算机科学与技术

专业班级:CS1209班

学号:

姓名:

****:***

2014 年 1 月22 日

一、需求分析

1.题目要求

整型栈是一种先进后出的存储结构,对其进行的操作通常包括判断栈是否为空、向栈顶添加一个整型元素、出栈等。整型栈类型及其操作函数采用非面向对象的纯C语言定义,请将完成上述操作的所有函数采用纯C语言编程,然后写一个main函数对栈的所有操作函数进行测试。

struct STACK{

int *elems;

始化p指向的栈:最多m个元素");

printf("\t\t 2.用栈s初始化p指向的栈\n");

printf("\t 3.返回p指向的栈的实际元素个数pos");

printf("\t 4.将e入栈,并返回p\n");

printf("\t 5.出栈到e,并返回p");

printf("\t\t\t 6.赋s给p指的栈,并返回p\n");

printf("\t 7.打印p指向的栈");

printf("\t\t\t 8.销毁p指向的栈\n");

printf("\t\t\t\t 0.退出程序\n");

printf("\t****************************************************************\n");

}

typedef struct STACK{

int *elems; //申请内存用于存放集合的元素

int max; //集合能存放的最大元素个数

int pos; //集合实际已有元素个数,集合空时pos=0;

} STACK;

void initSTACK(STACK *const p, int m)

{

p->max=m;

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",&m);

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("最大容量为:\t%d",p->max);

}

else

{

printf("最大容量为:\t%d",p->max);

printf("\n当前的数:\n%d\n",p->pos);

printf("里面的元素为:\n");

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

{

printf("%d\t",p->elems[i]);

}

}

}

void destroySTACK(STACK*const p)

{

free(p->elems);

p->max=0;

p->pos=0;

if(p->max==0)

printf("摧毁栈成功!");

else

printf("摧毁栈未成功\npos=%d!!",p->pos); }

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",&op);

switch(op)

{

case 1:printf(" ");

相关文档
最新文档