栈的表示及栈的应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
//若栈不空,则删除S的栈顶元素,用e返回其值,并返回OK;否则返回ERROR
if(S.top==S.base)
return ERROR;
e=*--S.top;
return OK;
} //Pop
Status StackEmpty(SqStack S)
{
//若栈不空,返回ERROR,否则返回OK
if (S.top==S.base)
if (!S.base) exit(OVERFLOW);//存储分配失败
S.top=S.base+S.stacksize;
S.stacksize+=STACKINCREMENT;
}
*S.top++=e;
return OK;
} //PUSH
Status Pop(SqStack &S, SElemType &e)
S.base=(SElemType *)malloc (STACK_INIT_SIZE*sizeof(SElemType));
if (!S.base) exit (OVERFLOW);//存储分配失败
S.top=
S.base;
S.stacksize=STACK_INIT_SIZE;
return OK;
while(N)
{
Push(S,N % M);
N=N/M;
}
printf("其对应的%d进制数是",M);
while(!StackEmpty(S)){
Pop(S,e);
printf("%d",e);
}
printf("\n");
}
递归程序
#include<stdio.h>
long Fibonacci(int n);
4.写好代码
5.编译->链接->调试
【主要代码】进制转换
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int SElemType;
t=t*n;
if(n>1)
t=Fibonacci(n-1)+Fibonacci(n-2);
return t;
}
汉诺塔
#incluBiblioteka Baidue<stdio.h>
void move(char a,int n,char b)
{
printf("将编号为%d的盘从移到%c上\n",n,a,b);
}
void hanoi(int n,char x,char y,char z){
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct {
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &S){//构造一个空栈
实验二:栈的表示及栈的应用
【实验目的】
(1)掌握栈的顺序存储结构及其基本操作的实现。
(2)掌握栈后进先出的特点,并利用其特性在解决实际问题中的应用。
(3)掌握用递归算法来解决一些问题。
【实验内容】
1.编写程序,对于输入的任意一个非负十进制整数,输出与其等值的八进制数(课本P48)。
2. 编写递归程序,实现以下函数的求解(课本P54)。
return OK;
return ERROR;
} //StackEmpty
void main(){
int N,e,M;
SqStack S;
InitStack(S);
printf("请入一个数字:");
scanf("%d",&M);
printf("需要转换为几进制:");
scanf("%d",&M);
if(n==1)
move(x,1,z);
else
{
hanoi(n-1,x,z,y);
move(x,n,z);
hanoi(n-1,y,x,z);
}
}
void main()
{
int n;
printf("请输入n的值: ");
scanf("%d",&n);
hanoi(n,'a','b','c');
}
【实验心得】
3.编写程序,实现Hanoi塔问题(课本P55-P58)。
【实验步骤】
1.打开VC++。
2.建立工程:点File->New,选Project标签,在列表中选Win32 Console Application,再在右边的框里为工程起好名字,选好路径,点OK->finish。至此工程建立完毕。
3.创建源文件或头文件:点File->New,选File标签,在列表里选C++ Source File。给文件起好名字,选好路径,点OK。至此一个源文件就被添加到了你刚创建的工程之中。
}//InitStack
Status Push(SqStack &S, SElemType e){
//插入元素e为新的栈顶元素
if (S.top-S.base>=S.stacksize)
{ //栈满,追加存储空间
S.base=(SElemType *)realloc(S.base,(S.stacksize+STACKINCREMENT) *sizeof(SElemType));
void main()
{
int n;
long L;
printf("请输入n的值:");
scanf("%d",&n);
L=Fibonacci(n);
printf("Fibonacci(%d)=%ld\n",n,L);
}
long Fibonacci(int n)
{
long t=1;
if(n==1||n==0)
通过这次实验课程的学习使我对书本上的知识有了更深的了解,更加明白了深层次含义。也明白了书本的重要性以及对基础知识的掌握的重要性的深刻认识。以后的学习生活中我一定汲取这次得到的教训。实事求是,全力以赴。
相关文档
最新文档