笔尖下的导数 发表于 2012-3-21 21:56:21

按照递归实现由26个小写英文字母组成的字符串逆序大写输出

我按照书上的一段一段的算法,然后再拼起来,结果怎么执行不出来 啊????、
#include "stdafx.h"
#include<stdio.h>
#include<malloc.h>
#define STACK_INIT_SIZE100 // 为栈分配一个基本容量
#define STACKINCREMENT10// 存储空间分配增量
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;// 栈的初始容量分配
returnOK;
}//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;
returnOK;
}//Push


//出栈操作
Status Pop(SqStack &S,SElemType &e)
{// 出栈,删除栈顶元素用e返回
if (S.top==S.base) // 栈空
    returnERROR;
e=* -- S.top; // 取栈顶元素赋给e
returnOK;
}



void ReverseRead( )
{
        char ch;
        InitStack(S);
   while ((ch=getchar())!= '\ n')// 输入字符,直到输入换行符
          Push(S ,ch); // 将输入的每个字符入栈
   while (!StackEmpty(S)) // 依次退栈并输出退出的字符
   {
               
               Pop(S,&ch);
         putchar(ch);
   }
   putchar('\n');
}
页: [1]
查看完整版本: 按照递归实现由26个小写英文字母组成的字符串逆序大写输出