2 sungaochao sungaochao 于 2016.03.06 22:16 提问

这段代码有什么错误,为什么输入后就不能运行了??

#include
#define MAX 100

//顺序栈的定义
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;

//初始化
int InitStack(SqStack &S){
S.base=new int[MAX];
if(!S.base){
return 0;
}
S.base=S.top;
S.stacksize=MAX;
return 1;
}

//入栈
int Push_S(SqStack &S,int e){
//将元素e入栈
if(S.top-S.base==S.stacksize){//判断栈是否满
return 0;
}
S.top++=e;
//S.top+=1;
return 1;
}
//出栈
int Pop_S(SqStack &S,int &e){
//用e返回出栈的元素
if(S.top==S.base){//栈空
return 0;
}
e=
--S.top;
return 1;
}

int main(){
SqStack S;
if(InitStack(S)){
printf("顺序栈初始化成功!\n");
}else{
printf("顺序栈初始化失败!\n");
}

printf("请输入入栈元素:");
int e1;
scanf("%d",&e1);
if(Push_S(S,e1)){
    printf("入栈成功!\n");
}else{
    printf("入栈失败!\n");
}

}

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.06 22:26
已采纳

S.base=S.top;
写反了
S.top=S.base;

WinsenJiansbomber
WinsenJiansbomber   2016.03.06 23:27

S.top++=e; 这种写法是要拉去打靶的,虽然编译通过,但是在软件开发中给后人的维护带来头痛感daba

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
c++builder error:第一次运行能成功,第二次运行后不能成功
1、这是一个设置ip地址的程序,第一次运行该窗口时,能把ip设置成功,然后点击Form11->Close();退出。后来又运行该窗口,设置相同的ip,竟然会失败。而且地址控件输入框中的值,点一下框就会显示出框中的值。而且获取的地址框中的地址值为0.0.0.0 2、我觉得可能是第一次运行该窗口程序后,由于没有退出程序,便没有关闭对应的地址控件窗口。然后第二次运行该窗口程序后,执行到Form
ADO 版本问题导致了程序不能在其他电脑运行
最近同事开发了一个VC2003+ADO的程序,在本机可以运行,但是拷贝到其他不同WINDOW版本机器上则不可以运行,最后发现是ADO版本问题。把高版本的ADO拷过来跟程序一起编译,即可连接上数据库。
问题A
复杂度分析(Ⅰ) 时间限制: 1 Sec  内存限制: 128 MB 题目描述 分析如下代码 for(i=1;i   for(j=1;j     for(k=1;k       printf("\n"); 问printf语句共执行了几次?这段代码执行完以后i+j+k值为多少? 输入 由多行组成,每行一个整数n, 1
问题 A: 复杂度分析(Ⅰ)
问题 A: 复杂度分析(Ⅰ) 题目描述 分析如下代码 for(i=1;i<n;i++) for(j=1;j<i;j++) for(k=1;k<j;k++) printf("\n"); ---------[1] 问[1]语句共执行了几次?这段代码执行完以后i+j+k值为多少? 输入 由多行组成,每行一个整数n, 1<= n <= 3000 输出 对每一行输入,输出对应的
eclipse非正常关闭后不能启动
原文地址:https://wenku.baidu.com/view/1bbdfa88844769eae009edf6.html eclipse启动卡死的问题(eclipse上一次没有正确关闭,导致启动的时候卡死错误解决方法),自己常用的解决方法: 方案一(推荐使用,如果没有这个文件,就使用方案二): 到\.metadata\.plugins\org.eclip
stm32中“拔掉jlink”程序无法正确运行
Q:在调试stm32程序时,从电脑USB口拔掉jlink后开发板上程序为什么无法正确运行?断点复位后也不行。 A:首先,要拔了jlink与开发板的连接(而不仅仅是其与PC的连接),因为jlink本省内部也有电路,对开发板上的程序运行有所影响;          其次,检查stm32的boot[1:0]的配置,将BOOT0配置为0才能从复位后Flash启动。BOOT的具体配置如下:
C#笔试题(二)
一、问答题 61.下面这段代码输出什么?为什么? 答案注释: int i=5;  int j=5;  if (Object.ReferenceEquals(i,j))  Console.WriteLine("Equal");  else  Console.WriteLine("Not Equal");  不相等,因为比较的是对像 62.什么叫做SQL注入,如何防止?请举例说明。
c++程序执行时候,有的语句根本不执行的原因
(1)问题描述:咱们在写程序的时候,希望程序能够按照自己的想法顺利执行下去。但是有时候却出现根本不执行的情况。如以下程序显示 for(int j=0 ; j<=bmpWidth-1 ;j++) { for(int k=0 ; k<3; k++)           //控制rgb的变化  { //m=*(pBmpBuf+i*lineByte+j*3
关于idea运行项目时突然java文件报错
1、问题描述:以前项目一直运行的没问题,当我复制java文件到项目里后,运行项目时java文件会出现错误,如图: 其实java文件本身是没有问题的,但是报错了。ps:出现这个问题的原因就是编码的问题 2,解决方法:首先找到项目所在目录的.idea文件夹下的encodings.xml,打开,如图: 这时你会看到有一个或多个  ,然后我们在idea里点击file找到settin
return命令--后面的程序不执行
C或C++语言中有一个return命令,该命令很容易忽略1项功能,即return为函数结束符,如果函数中运行到return命令后,除了返回值,该函数也将运行结束,后面如果有程序也将不再运行,不过也不用担心这一点,后面程序不运行的前提是要运行到return命令,因为有些if判断,是不运行对应分支的return命令的。