- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、实验目的
复习堆栈的基础知识
练习入栈出栈操作二、实验设备
装有运行 C 语言环境的计算机。三、实验内容
实验一
对下述给定程序,完成:
阅读并运行程序。
在有’ /* */ ’的语句后加注释 , 说明语句功能
编程完成在具有 10 个元素的堆栈的栈顶插入数据 11。要求:调试通过并将源程序提交。
四、实验步骤和结果实验一代码
#include stdio.h #define stacksize 100
int push(int s[], int x, int *ptop)/* {
入栈 */
int top;
top = *ptop; /* top
if (top == stacksize) /*
等于传入的栈的指针所在位置 */
判断头指针是否等于栈的最大值
*/
{
printf(overflow);
return (0);
} /* 判断栈满的时候输出“ overflow ”程序结束 */
else {
s[top] = x; /* 将传入的 x 值给现在栈顶所在位置
*ptop = ++top; /* 栈顶上移 */
return (1);
*/
} /*
栈未满时进行入栈操作
*/
}
void main()
{
static int s[100];
int top = 0, result;
result = push(s, 11, top); /* 让 11 入栈 如果成功返回 1 result=1 否则 result=0 */
if (result == 1) /*
入栈成功
*/
{
printf(success ! \n);
printf(top=%d, top);
} /* 入栈成功 输出
else printf(failure!);/*
sucess
并且把栈顶位置输出 */
入栈失败 输出 failure*/
}
#include stdio.h #define stacksize 100
int pop(int s[ ], int *ptop, int *py)/*
出栈函数
*/
{
int top;
top=*ptop;/* top 等于传入栈顶指针所在位置值 */
if(top==0)/* 位置 =0 栈空 */
{ printf(stack empty);
return( 0); }/* 栈空时 输出 stack empty 返回值 0 */
else { --top;
*py=s[top]; /* 将栈顶元素弹出 */
*ptop=top;/* 将下移的栈顶指针值 赋值给 *ptop */
return(1);
}
}
void main()
{static int s[20]={10,20,30};
int top=3,result,y;
result=pop(s,top,y);/* 出栈函数调用 成功出栈后
if(result ==1)
{ printf (success ! \n);
printf (top=%d,y=%d , top,y);}/* 成功出栈后输出
result=1 否则等于 0 */
success 并且将栈顶指针位置值和
栈顶元素值输出
*/
else printf(failure!);
}
插入代码
#include stdio.h
#define stacksize 100
int pop(int s[ ], int *ptop, int *py)/*
{
出栈函数 */
int top;
top=*ptop;/* top 等于传入栈顶指针所在位置值 */
if(top==0)/* 位置 =0 栈空 */
{ printf(stack empty);
return( 0); }/* 栈空时 输出 stack empty 返回值 0 */
else { --top;
*py=s[top]; /* 将栈顶元素弹出 */
*ptop=top;/* 将下移的栈顶指针值 赋值给 *ptop */
return(1);
}
}
int push(int s[], int x, int *ptop)/*
{
入栈 */
int top;
top = *ptop; /* top
if (top == stacksize) /*
等于传入的栈的指针所在位置 */
判断头指针是否等于栈的最大值
*/
{
printf(overflow);
return (0);
} /* 判断栈满的时候输出 overflow 程序结束 */ else {
s[top] = x; /* 将传入的 x 值给现在栈顶所在位置
*ptop = ++top; /* 栈顶上移 */
return (1);
*
文档评论(0)