栈的应用的实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级学号姓名实验组别
试验日期室温报告日期成绩
报告内容:(目的和要求、原理、步骤、数据、计算、小结等)
实验名称:栈的实现与应用
实验目的;
1.掌握栈的定义。
2.掌握栈基本操作的实现,并能用于解决实际问题。
实验环境(硬/软件要求):
Windows 2000, Visual C++ 6.0
实验内容:
1.实现栈的如下基本操作:push,pop,isempty,isfull,createstack.
2.利用栈的基本操作实现conversion()函数,该函数能将任意输出的十进制整数转化为二进制形式表示。
实验要求:
1.用顺序存储结构实现栈的基本操作:push,pop,isempty,isfull,createstack.
2.利用栈的基本操作实现conversion()函数
3.编写主函数完成实验内容2.
【C语言源程序】
#include
#include
#define maxsize 1024 /*栈的最大容量为1024*/
typedef int datatype;
typedef struct
{
datatype elements[maxsize];
int Top; /*栈指针*/
}Stack;
void setNull(Stack *S)
{S->Top=-1;}
int isfull(Stack *S)
{if(S->Top>=maxsize-1)return (1);
else return (0);
}
int isempty(Stack *S)
{
if(S->Top>=0)return (0);
else return (1);
} /*isempty*/
void push( Stack *S,datatype E)
{ if(S->Top>=maxsize-1)
{
printf("Stack Overflow");} /*上溢现象*/ else
{ S->Top++;
S->elements[S->Top]=E;
}
}
datatype *pop(Stack *S)
{
datatype *temp;
if(isempty(S))
{
printf("Stack underfiow");
return (NULL);
}else
{
S->Top--;
temp=(datatype *)malloc(sizeof(datatype));
*temp=S->elements[S->Top+1];
return (temp);
}
}/*pop*/
void conversion(int n)
{
Stack S;
setNull(&S);
int r,m;
r=n;
while(r)
{
m=r%2;
if(isfull(&S))printf("Over flow\n");
else push(&S,m);
r=r/2;
}
printf("转化后的二进制数为\n");
while(!isempty(&S))
printf("%d",*(pop(&S)));
printf("\n");
}
void main()
{
int num;
printf("请输入要转换为二进的十进制数据\n");
scanf("%d",&num);
conversion(num); }