鱼C论坛

 找回密码
 立即注册
查看: 5023|回复: 0

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

[复制链接]
发表于 2012-3-21 21:56:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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');  
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-4 01:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表