Hanoi塔 栈与递归C编程实现
参考书 严蔚敏 数据结构
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
typedef int ElemType;
typedef int Status;
#define STACK_SIZE 10
#define STACK_INCREMENT 10
#define OK 1
#define ERROR -1
typedef struct{
ElemType *base;
ElemType *top;
int stacksize;
char tag;
}Stack;
Status InitStack(Stack &S,char tag)
{
S.base=(ElemType*)malloc(STACK_SIZE*sizeof(ElemType));
if (!S.base)
return ERROR;
S.top=S.base;
S.tag=tag;
S.stacksize=STACK_SIZE;
return OK;
}
Status Pop(Stack &S,ElemType &e)
{
if (S.base==S.top)//判断是否非空
return ERROR;
S.top--;//栈顶元素降低
e=*S.top;//输出
return OK;
}
Status Push(Stack &S,ElemType e)
{
if ((S.top-S.base)>=S.stacksize)//栈满追加数据元素
{
S.base=(ElemType *)realloc(S.base,(S.stacksize+STACK_INCREMENT)*sizeof(ElemType));
//指针名=(数据类型*)realloc(要改变内存大小的指针名,新的大小)。//新