栈的应用的实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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); }

相关文档
最新文档