关于C语言的问题

[复制链接]
查看11 | 回复4 | 2011-5-6 06:53:44 | 显示全部楼层 |阅读模式
这段什么意思啊,求助,谢谢
void push(int);
int pop();
int *pi,*tos;
main()
{
int v;
pi=(int *)malloc(50*sizeof(int));
if(!pi)
{
printf(allocation failure\n);
exit(0);
}
tos=pi;
do
{
printf(please input value,push it;enter 0 then pop;(enter -1 then stop)\n);
scanf(%d,&v);
if(v!=0) push(v);
else printf(pop this is it %d\n,pop());
}
while(v!=-1);
}
void push(int i)
{
pi++;
if(pi==(tos+50))
{
printf(stack overflow\n);
exit(0);
}
*pi=i;
}
int pop()
{
if(pi==tos)
{
printf(stack underflow\n);
exit(0);
}
pi--;
return *(pi+1);
}

回复

使用道具 举报

千问 | 2011-5-6 06:53:44 | 显示全部楼层
首先是有错误三处 , 1 头文件应该有#include 2scanf() 用法全错 3 printf() 用法全错 ,改了一下 , 可以运行#include#includevoid push(int); //函数声明int pop();
//函数声明int *pi,*tos;
//设置静态全局变量 ,就是在整个文件里都可以操作void main( void ){int v;pi=(int *)malloc(50*sizeof(int)); //
动态开辟数组 , 不懂可以上网查一下,相当于int a[
回复

使用道具 举报

千问 | 2011-5-6 06:53:44 | 显示全部楼层
堆栈结构。申请了50长度的int,就是4*50字节的内存。然后在这个内存中存取数据。能存50个int型数据。手动输入数字,就可以把这个数放到这个结构中输入0就把最后一个输入的数字删除掉输入-1就是退出。push() 就是相当于入栈,pop 是出栈这2个函数各自还做了防错误保护,比如输入的数字超过50个后,push检测到报警提示并退出。pop
回复

使用道具 举报

千问 | 2011-5-6 06:53:44 | 显示全部楼层
我已经做了修改,这个程序是用数组模拟栈,你运行一下代码就应该大致明白了#include #include #include void push(int);int pop();int *pi,*tos;void main(){int v;pi=(int *)m
回复

使用道具 举报

千问 | 2011-5-6 06:53:44 | 显示全部楼层
什么问题啊?printf()为什么不见双引号啊?printf(“stack underflow\n”);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行