您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 计算机软件基础实验-堆栈
-1-一、实验目的1.复习堆栈的基础知识2.练习入栈出栈操作二、实验设备装有运行C语言环境的计算机。三、实验内容实验一1.对下述给定程序,完成:1)阅读并运行程序。2)在有’/**/’的语句后加注释,说明语句功能2.编程完成在具有10个元素的堆栈的栈顶插入数据11。要求:调试通过并将源程序提交。四、实验步骤和结果实验一代码1.#includestdio.h#definestacksize100intpush(ints[],intx,int*ptop)/*入栈*/{inttop;top=*ptop;/*top等于传入的栈的指针所在位置*/if(top==stacksize)/*判断头指针是否等于栈的最大值*/{printf(overflow);return(0);}/*判断栈满的时候输出“overflow”程序结束*/else{s[top]=x;/*将传入的x值给现在栈顶所在位置*/*ptop=++top;/*栈顶上移*/return(1);}/*栈未满时进行入栈操作*/}voidmain(){staticints[100];inttop=0,result;result=push(s,11,&top);/*让11入栈如果成功返回1result=1否则result=0*/if(result==1)/*入栈成功*/{printf(success!\n);printf(top=%d,top);}/*入栈成功输出sucess并且把栈顶位置输出*/-2-elseprintf(failure!);/*入栈失败输出failure*/}2.#includestdio.h#definestacksize100intpop(ints[],int*ptop,int*py)/*出栈函数*/{inttop;top=*ptop;/*top等于传入栈顶指针所在位置值*/if(top==0)/*位置=0栈空*/{printf(stackempty);return(0);}/*栈空时输出stackempty返回值0*/else{--top;*py=s[top];/*将栈顶元素弹出*/*ptop=top;/*将下移的栈顶指针值赋值给*ptop*/return(1);}}voidmain(){staticints[20]={10,20,30};inttop=3,result,y;result=pop(s,&top,&y);/*出栈函数调用成功出栈后result=1否则等于0*/if(result==1){printf(success!\n);printf(top=%d,y=%d,top,y);}/*成功出栈后输出success并且将栈顶指针位置值和栈顶元素值输出*/elseprintf(failure!);}插入代码#includestdio.h#definestacksize100intpop(ints[],int*ptop,int*py)/*出栈函数*/{inttop;top=*ptop;/*top等于传入栈顶指针所在位置值*/-3-if(top==0)/*位置=0栈空*/{printf(stackempty);return(0);}/*栈空时输出stackempty返回值0*/else{--top;*py=s[top];/*将栈顶元素弹出*/*ptop=top;/*将下移的栈顶指针值赋值给*ptop*/return(1);}}intpush(ints[],intx,int*ptop)/*入栈*/{inttop;top=*ptop;/*top等于传入的栈的指针所在位置*/if(top==stacksize)/*判断头指针是否等于栈的最大值*/{printf(overflow);return(0);}/*判断栈满的时候输出overflow程序结束*/else{s[top]=x;/*将传入的x值给现在栈顶所在位置*/*ptop=++top;/*栈顶上移*/return(1);}/*栈未满时进行入栈操作*/}voidmain(){staticints[20]={10,20,30,15,2,1,8,9,8,7};inttop=9,a,y,b;a=push(s,11,&top);if(a==1)/*入栈成功*/{printf(\n入栈成功!\n);printf(top=%d,top);}/*入栈成功输出sucess并且把栈顶位置输出*/b=pop(s,&top,&y);/*出栈函数调用成功出栈后result=1否则等于0*/if(b==1){printf(\n出栈成功!\n);printf(top=%d,y=%d\n,top,y);}/*成功出栈后输出success并且将栈顶指针位置值和栈顶元素值输出*/elseprintf(failure!);}-4-五、总结和问题1.问题:对于出栈入栈函数自己书写时采用的传值,导致传入值在函数中并没有获得更新。解决:参考给定的函数进行了传入地址的操作,能够及时的更新了栈顶位置指针2.对于本次实验给定的入栈函数,和讲课时不同给定的的当top=0时为栈空,需要注意!
本文标题:计算机软件基础实验-堆栈
链接地址:https://www.777doc.com/doc-6284267 .html