|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我按照书上的一段一段的算法,然后再拼起来,结果怎么执行不出来 啊????、
#include "stdafx.h"
#include<stdio.h>
#include<malloc.h>
#define STACK_INIT_SIZE 100 // 为栈分配一个基本容量
#define STACKINCREMENT 10// 存储空间分配增量
typedef struct SElemType{
SElemType *base; // 栈底指针,始终指向栈底;
SElemType *top ; // 栈顶指针始终指向栈顶元素的下一个位置
int stacksize ; // 栈的初始容量
}SqStack;
//堆栈的构造
Status InitStack ( SqStack &S) // 构造一个空栈S
{ 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;
}//InitStack
//判断堆栈是不是为空
Status StackEmpty(SqStack S)
{
if (S.top==S.base)
return TRUE;
else
return FALSE;
//进栈操作
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));
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)
{// 出栈,删除栈顶元素用e返回
if (S.top==S.base) // 栈空
return ERROR;
e=* -- S.top; // 取栈顶元素赋给e
return OK;
}
void ReverseRead( )
{
char ch;
InitStack(S);
while ((ch=getchar())!= '\ n') // 输入字符,直到输入换行符
Push(S ,ch); // 将输入的每个字符入栈
while (!StackEmpty(S)) // 依次退栈并输出退出的字符
{
Pop(S,&ch);
putchar(ch);
}
putchar('\n');
} |
|