注册 登录
编程论坛 数据结构与算法

为什么老弹出Micro soft的对话框?

最左边那个 发布于 2010-05-06 21:21, 649 次点击
#include<iostream.h>

typedef char datatype;
const int maxsize=100;
struct sqstack
{
    datatype data[maxsize];
    int top;
};

void init_sqstack(sqstack sq);
int push_sqstack(sqstack sq,datatype x);

void main()
{
    sqstack A;
    init_sqstack(A);
    push_sqstack(A,3);
}


void init_sqstack(sqstack sq)
{
    sq.top=-1;
}


int push_sqstack(sqstack sq,datatype x)
{

    if(sq.top==maxsize-1)
    {
        cout<<"栈满,不能进栈!\n";
        return 0;   
    }
   
    else
    {
        
        sq.data[(sq.top)++]=x;
        cout<<4444<<endl;
        
        cout<<sq.data<<endl;
        return 1;
    }
}

4 回复
#2
2010-05-06 22:39
1. 需要加上引用符号 &
2. 需要加上\0才能以字符串的形式打印
程序代码:
#include<iostream.h>
#include<stdio.h>
typedef char datatype;
const int maxsize=100;
struct sqstack
{
    datatype data[maxsize];
    int top;
};
void init_sqstack(sqstack &sq);//需要加引用符号
int push_sqstack(sqstack &sq,datatype x);
void main()
{
    sqstack A;
    init_sqstack(A);
    push_sqstack(A,3);
}

void init_sqstack(sqstack &sq)
{
    sq.top=-1;
}

int push_sqstack(sqstack &sq,datatype x)
{
    if(sq.top==maxsize-1)
    {
        cout<<"栈满,不能进栈!\n";
        return 0;
    }

 
    else
    {
      
        sq.data[++(sq.top)]=x;
  sq.data[++(sq.top)] = '\0';//需要加上\0才能以字符串的形式输出
        cout<<4444<<endl;
        cout<<sq.data<<endl;
        return 1;
    }
}

#3
2010-05-07 16:56
楼主给分呀
#4
lftp20202010-05-08 18:11
可以结贴了
#5
tfxanxing2010-05-09 10:16
程序有几处错误,我用的是vs2008,程序如下


#include<iostream>
using namespace std;            //跟你的不同

typedef char datatype;
const int maxsize=100;
struct sqstack
{
    datatype data[maxsize];
    int top;
    sqstack()                        //弹出对话框是因为没有初始化,故加上一个函数
    {
        top=0;
    }
};

void init_sqstack(sqstack sq);
int push_sqstack(sqstack sq,datatype x);

void main()
{
    sqstack A;
    init_sqstack(A);
    push_sqstack(A,'a');
}


void init_sqstack(sqstack sq)
{
    sq.top=0;                                //这儿应该是top=0而不是-1
}


int push_sqstack(sqstack sq,datatype x)
{

    if(sq.top==maxsize-2)
    {
        cout<<"栈满,不能进栈!\n";
        return 0;   
    }
   
    else
    {
        
        sq.data[sq.top++]=x;
        sq.data[sq.top]='\0';                    //这儿要加字符串结束标记
        cout<<4444<<endl;
        cout<<sq.data<<endl;
        return 1;
    }
}
1