用dos跑JAVA程序无结果_各位高手帮忙看一个java小程序的运行,为什么在dos里头得不出任何结果 大家看一下程序和运行哪里出错了...

#define stack_size 100

#define stack_increment 10

#define OK 1

#define error 0

#define status int

#define elemtype int

#define overflow -2

typedef struct /*定义栈数据类型*/

{ elemtype *base;

elemtype *top;

int stacksize;

}stack;

/*建立空栈函数*/

status initstack(stack S)

{ S.base=(elemtype*)malloc(stack_size*sizeof(elemtype)); /*分配内存*/

if(!S.base) exit(overflow);

S.top=S.base;

S.stacksize=stack_size;

return OK;

}

/*进栈函数*/

status push(stack S,int e)

{if((S.top-S.base)>=S.stacksize)

{S.base=(elemtype*)realloc(S.base,(S.stacksize+stack_increment)*sizeof(elemtype));

if(!S.base) exit(overflow);

S.top=S.base+S.stacksize;

S.stacksize+=stack_increment;

}

*S.top++=e;

return OK;

}

/*出栈函数*/

status pop(stack S,int e)

{if(S.top==S.base)

return error;

e=*--S.top;

return OK;

}

/*判断栈是否为空*/

stackempty(stack S)

{if(S.top==S.stack)

return 1;

else

return 0;

}

main()

{stack S;

int N,e;

initstack(S);

scanf("%d",N);

while(N)

{push(S,N%8);

N=N/8;

}

pop(S,e);

printf("%d",e);

getch();

}

问题补充:小弟才学了C不久,很多地方没学好,请各位大虾照顾下,帮忙指出错误。还有,希望各位大虾的答案能直接在WIN—TC上运行。感激不尽。。。。。。

发现一个新问题:在调试过程中我在main()函数中加了一条if(S.top==S.base)

printf("stack is empty");运行后没结果,但改为if(S.top>=S.base)

printf("stack is empty");时,运行后结果中却有“stack is empty“了

对此极为不解。

main()

{stack S;

int N,e;

initstack(S);

if(S.top>=S.base)

printf("stack is empty");

scanf("%d",N);

while(N)

{push(S,N%8);

N=N/8;

}

pop(S,e);

printf("%d",e);

getch();

}

#include

#include

#include

#define stack_size 100

#define stack_increment 10

#define OK 1

#define error 0

#define status int

#define elemtype int

#define overflow -2

typedef struct /*定义栈数据类型*/

{ elemtype *base;

elemtype *top;

int stacksize;

}stack;

/*建立空栈函数*/

status initstack(stack S)

{ S.base=(elemtype*)malloc(stack_size*sizeof(elemtype)); /*分配内存*/

if(!S.base) exit(overflow);

S.top=S.base;

S.stacksize=stack_size;

return OK;

}

/*进栈函数*/

status push(stack S,int e)

{if((S.top-S.base)>=S.stacksize)

{S.base=(elemtype*)realloc(S.base,(S.stacksize+stack_increment)*sizeof(elemtype));

if(!S.base) exit(overflow);

S.top=S.base+S.stacksize;

S.stacksize+=stack_increment;

}

*S.top++=e;

return OK;

}

/*出栈函数*/

status pop(stack S,int e)

{if(S.top==S.base)

return error;

e=*--S.top;

return OK;

}

/*判断栈是否为空*/

int stackempty(stack S)

{if(S.top!=S.stack)

return 1;

else

return 0;

}

main()

{stack S;

int N,e;

initstack(S);

scanf("%d",N);

while(N)

{push(S,N%8);

N=N/8;

}

pop(S,e);

printf("%d",e);

system("pause");

}

修改如下:加了三个头文件

#include "malloc.h"

#include "stdio.h"

#include "stdlib.h"

#define stack_size 100

#define stack_increment 10

#define OK 1

#define error 0

#define status int

#define elemtype int

#define overflow -2

typedef struct /*定义栈数据类型*/

{

elemtype *base;

elemtype *top;

int stacksize;

}stack;

/*建立空栈函数*/

status initstack(stack S)

{

S.base=(elemtype*)malloc(stack_size*sizeof(elemtype)); /*分配内存*/

if(!S.base)

exit(overflow);

S.top=S.base;

S.stacksize=stack_size;

return OK;

}

/*进栈函数*/

status push(stack S,int e)

{

if((S.top-S.base)>=S.stacksize)

{S.base=(elemtype*)realloc(S.base,(S.stacksize+stack_increment)*sizeof(elemtype));

if(!S.base)

exit(overflow);

S.top=S.base+S.stacksize;

S.stacksize+=stack_increment;

}

*S.top++=e;

return OK;

}

/*出栈函数*/

status pop(stack S,int e)

{

if(S.top==S.base)

return error;

e=*--S.top;

return OK;

}

/*判断栈是否为空*/

stackempty(stack S)

{

if(S.top==S.base)

return 1;

else

return 0;

}

void main()

{

stack S;

int N,e;

initstack(S);

scanf("%d",N);

while(N)

{push(S,N%8);

N=N/8;

}

pop(S,e);

printf("%d",e);

getchar();

}

取消

评论

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:游动-白 设计师:我叫白小胖 返回首页

打赏作者

东南亚电商王里

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值