主题:栈操作问题?
yard58
[专家分:2200] 发布于 2006-03-23 21:06:00
#define max 5
typedef struct {
char stack[max];
int top;
}qstype;
void initiateqs(qstype *s)
{
s->top=-1;
}
int push(qstype *s,int x)
{
if(s->top>=max-1)
{
cout<<"栈满"<<endl;
return 0;
}
else
{
s->top++;
s->stack[s->top]=x;
return 1;
}
}
int pop(qstype *s)
{
if(s->top<0)
{
cout<<"栈空"<<endl;
return 0;
}
else
{
s->top--;
return s->stack[s->top+1];
}
}
void main()
{
int ch,sign;
qstype *s;
initiateqs(s);//为什么这里提示s没有初始化,应该怎么改?
printf(">");
scanf("%d",&ch);
while(ch!=-1)
{
if((sign=push(s,ch))!=1)
break;
scanf("%d",&ch);
}
while((ch=pop(s))!=0)
printf("%d",ch);
printf("\n");
}
回复列表 (共2个回复)
沙发
Bsky [专家分:10] 发布于 2006-03-24 00:14:00
#include"stdio.h"
#include<iostream.h>
#define max 5
typedef struct {
char stack[max];
int top;
}qstype;
void initiateqs(qstype *s)
{
s->top=-1;
}
int push(qstype *s,int x)
{
if(s->top>=max-1)
{
cout<<"栈满"<<endl;
return 0;
}
else
{
s->top++;
s->stack[s->top]=x;
return 1;
}
}
int pop(qstype *s)
{
if(s->top<0)
{
cout<<"栈空"<<endl;
return 0;
}
else
{
s->top--;
return s->stack[s->top+1];
}
}
void main()
{
int ch,sign;
qstype *s,*temp;
temp=new qstype;//声明一个对象
s=temp;//赋值
initiateqs(s);//为什么这里提示s没有初始化,应该怎么改?
printf(">");
scanf("%d",&ch);
while(ch!=-1)
{
if((sign=push(s,ch))!=1)
break;
scanf("%d",&ch);
}
while((ch=pop(s))!=0)
printf("%d",ch);
printf("\n");
}
板凳
海上飞洪 [专家分:520] 发布于 2006-03-24 00:45:00
qstype s;
不要加*
我来回复