回 帖 发 新 帖 刷新版面

主题:栈操作问题?


#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个回复)

沙发

#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");
}
 
 

板凳

qstype s;
不要加*

我来回复

您尚未登录,请登录后再回复。点此登录或注册