为什么我的程序不对(stack.cpp)

XBug 2003-09-13 09:31:52
//stack.h
// A traditional c implementation of type stack

const int max_len=1000;
enum boolean {false,true};
enum {EMPTY=-1,FULL=max_len-1};

struct stack
{
char s[max_len];
int top;
};

void reset(stack *stk)
{
stk->top=EMPTY;
}
void push(char c,stack* stk)
{
stk->top++;
stk->s[stk->top]=c;
}

char pop(stack* stk)
{
return(stk->s[stk->top--]);
}

char top(stack* stk)
{
return(stk->s[stk->top]);
}

boolean empty(const stack* stk)
{
return (boolean)(stk->top==EMPTY);
}

boolean full(const stack* stk)
{
return (boolean)(stk->top==FULL);
}

//stack.cpp
//Test of sack implementation by reversing a string

#include <iostream>
#include "stack.h" //stack implementation imported

main()
{
stack s;
char str[40]={"My name is Betty Dolsberry!"};
int i=0;

std::cout<<str<<'\n'; //print the string
reset(&s);
while(str[i]) //push onto stack
if(!full(&s))
push(str[i++],&s);
while(!empty(&s))
std::cout<<pop(&s);
std::cout<<'\n';
}
...全文
52 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
flc 2003-09-13
  • 打赏
  • 举报
回复
STUDY
OpenGLPrimer 2003-09-13
  • 打赏
  • 举报
回复
//stack.h
// A traditional c implementation of type stack

const int max_len=1000;
//enum boolean {false,true};
//enum {EMPTY=-1,FULL=max_len-1};
const int EMPTY = -1;
const int FULL = max_len - 1;

struct stack
{
char s[max_len];
int top;
};

void reset(stack *stk)
{
stk->top = EMPTY;
}
void push(char c,stack* stk)
{
stk->top++;
stk->s[stk->top] = c;
}

char pop(stack* stk)
{
return(stk->s[stk->top--]);
}

char top(stack* stk)
{
return(stk->s[stk->top]);
}

bool empty(const stack* stk)
{
return static_cast<bool>(stk->top == EMPTY);
}

bool full(const stack* stk)
{
return static_cast<bool>(stk->top == FULL);
}


#include <iostream>
#include <stdlib.h>
#include "stack.h"

int main(int argc, char *argv[])
{
stack s;
char str[40] = {"My name is Betty Dolsberry!"};
int i=0;

std::cout<<str<<'\n'; //print the string
reset(&s);

while(str[i]) //push onto stack
if(!full(&s))
push(str[i++],&s);

while(!empty(&s))
std::cout<<pop(&s);
std::cout<<'\n';

system("PAUSE");
return 0;
}
晨星 2003-09-13
  • 打赏
  • 举报
回复
单步跟踪,看到哪一步出的错,问题就容易排除了。
deadcode 2003-09-13
  • 打赏
  • 举报
回复
说说有什么问题先...
wangfengsdu 2003-09-13
  • 打赏
  • 举报
回复
完全按照标准C++的标准写。
你的main()函数前面都没有返回值,
加个int吧。。
XBug 2003-09-13
  • 打赏
  • 举报
回复
TO: OpenGLPrimer(大水雷)
的确是这两个地方的问题 但是为什么会出现这样的问题呢??

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧