永发信息网

求数据结构——“栈”的调试

答案:1  悬赏:80  手机版
解决时间 2021-04-12 06:55
  • 提问者网友:鐵馬踏冰河
  • 2021-04-11 09:24

调了很长时间都没调好,看来我不是这个料~急需,程序如下:

#include "stdlib.h"
#define MAX 100
int *stack;
int *t;
void push();
main()
{
int x,y,m,i;
char s[50];
stack=(int *)malloc(MAX*sizeof(int));
if (!stack)
{
printf("\n can't create stack!\n");
exit(1);
}
t=stack;
printf("\t 《数据结构课程设计--利用栈进行多种运算》\n\n \t(可用的符号有+、-、*、/、?、%、^,输入q退出。)\n\n");
do{
printf("请输入数值或符号:");
printf(s);
switch(*s)
{
case'+':x=pop();
y=pop();
printf("相加结果为:%d+%d=%d\n",x,y,x+y);
push(x+y);
break;
case'-':x=pop();
y=pop();
printf("相减结果为:%d-%d=%d\n",x,y,x-y);
push(x-y);
break;
case'*':x=pop();
y=pop();
printf("相乘结果为:%d*%d=%d\n",x,y,x*y);
push(x*y);
break;
case'/':x=pop();
y=pop();
if(y==0)
{
printf("分母不能为零!\n");
break;}
printf("相除结果为:%d/%d=%.4f\n",x,y,(float)x/y);
push(x/y);
break;
case'?':x=pop();
y=pop();
printf("栈是 %d\n",x);
break;
case'^':x=pop();
y=pop();
m=1;i=y;
while (i>0)
{m=m*x;
i=i-1;
}
printf("乘方结果为:%d^(%d)=%d\n",x,y,m);
push(x^y);
break;
case'%':x=pop();
y=pop();
if(y==0)
{printf("分母不能为零!\n");
break;}
printf("求余结果为:%dmod(%d)=%d\n",x,y,x%y);
push(x%y);
break;
default:push(atoi(s));
}
}while(*s!='q');
}
void push(int n)
{
if(stack>stack+MAX-1)
{
printf("栈满!\n");
return;
}
*stack=n;
stack++;
}
pop()
{
stack--;
if(stack<t)
{printf("栈空!\n");
return(0);
}
return(*stack);
}

两个错误如下:

c:\documents and settings\administrator\桌面\修改过的程序\栈(未改完).c(13) : warning C4013: 'printf' undefined; assuming extern returning int


c:\documents and settings\administrator\桌面\修改过的程序\栈(未改完).c(23) : warning C4013: 'pop' undefined; assuming extern returning int

最佳答案
  • 五星知识达人网友:梦中风几里
  • 2021-04-11 09:47

栈,是从汇编的堆栈由来的,如果你知道堆栈,就不用我说了。



堆栈:就是一个先进后出(也叫后进先出)的一个象数组一样的存放数据系列的空间。在内存里以内存的地址为顺序。先进后出,也叫后进先出。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯