各位帮帮我吧,我的栈出问题了
时间:2011-12-11
来源:互联网
#include"stdio.h"
#include"iostream.h"
#define MAXSIZE 100
typedef struct
{
int top;
char data[MAXSIZE];
}SeqStack;
int Init(SeqStack *s)
{
s=new SeqStack;
if(s==NULL)
{
cout<<"error";
return 0;
}
else
{
cout<<"sucsess!";
s->top=-1;
cout<<s->top<<endl;
return 1;
}
}
int Empty(SeqStack *s)
{
if(s->top==-1)
return 1;
else
return 0;
}
int push(char w,SeqStack *s)
{
if(s->top==MAXSIZE-1)
return 0;
else
{
s->data[++s->top]=w;
return 1;
}
}
char pull(char x,SeqStack *s)
{
if(Empty(s))
return NULL;
else
{
x=s->data[s->top--];
return x;
}
}
char Top(SeqStack *s)
{
if(Empty(s))
return 0;
else return(s->data[s->top]);
}
void main()
{
char w='\0',a;
SeqStack *s;
Init(s);
// cout<<s->top;
cout<<"please enter a number";
cin>>a;
push(a,s);
pull(w,s);
cout<<w<<endl;
}
#include"iostream.h"
#define MAXSIZE 100
typedef struct
{
int top;
char data[MAXSIZE];
}SeqStack;
int Init(SeqStack *s)
{
s=new SeqStack;
if(s==NULL)
{
cout<<"error";
return 0;
}
else
{
cout<<"sucsess!";
s->top=-1;
cout<<s->top<<endl;
return 1;
}
}
int Empty(SeqStack *s)
{
if(s->top==-1)
return 1;
else
return 0;
}
int push(char w,SeqStack *s)
{
if(s->top==MAXSIZE-1)
return 0;
else
{
s->data[++s->top]=w;
return 1;
}
}
char pull(char x,SeqStack *s)
{
if(Empty(s))
return NULL;
else
{
x=s->data[s->top--];
return x;
}
}
char Top(SeqStack *s)
{
if(Empty(s))
return 0;
else return(s->data[s->top]);
}
void main()
{
char w='\0',a;
SeqStack *s;
Init(s);
// cout<<s->top;
cout<<"please enter a number";
cin>>a;
push(a,s);
pull(w,s);
cout<<w<<endl;
}
作者: liufenghui365 发布时间: 2011-12-11
调用Init(s)之后s本身的值没有变化,要用二级指针。
C/C++ code
C/C++ code
int Init(SeqStack **s) { *s=new SeqStack; if(*s==NULL) { cout<<"error"; return 0; } else { cout<<"sucsess!"; (*s)->top=-1; cout<<(*s)->top<<endl; return 1; } }
作者: zjs100901 发布时间: 2011-12-11
C/C++ code
#include"stdio.h" #include"iostream.h" #define MAXSIZE 100 typedef struct { int top; char data[MAXSIZE]; }SeqStack; int Init(SeqStack **s) { *s=new SeqStack; if(*s==NULL) { cout<<"error"; return 0; } else { cout<<"sucsess!"; (*s)->top=-1; cout<<(*s)->top<<endl; return 1; } } int Empty(SeqStack *s) { if(s->top==-1) return 1; else return 0; } int push(char w,SeqStack *s) { if(s->top==MAXSIZE-1) return 0; else { s->data[++s->top]=w; return 1; } } char pull(char *x,SeqStack *s) { if(Empty(s)) return NULL; else { *x=s->data[s->top--]; return *x; } } char Top(SeqStack *s) { if(Empty(s)) return 0; else return(s->data[s->top]); } void main() { char w='\0',a; SeqStack *s; Init(&s); // cout<<s->top; cout<<"please enter a number"; cin>>a; push(a,s); pull(&w,s); cout<<w<<endl; }
作者: zjs100901 发布时间: 2011-12-11
稍稍改下,供参考
C/C++ code
C/C++ code
#include <stdio.h> //规范写法 #include <iostream> //老的格式,新的编译器不支持 using namespace std; #define MAXSIZE 100 typedef struct { int top; char data[MAXSIZE]; }SeqStack; SeqStack * Init() //init有问题 { SeqStack *s; s=new SeqStack; if(s==NULL) { cout<<"error"; return 0; } else { cout<<"sucsess!"; s->top=-1; cout<<s->top<<endl; return s; } } int Empty(SeqStack *s) { if(s->top==-1) return 1; else return 0; } int push(char w,SeqStack *s) { if(s->top==MAXSIZE-1) return 0; else { s->data[++s->top]=w; return 1; } } char pull(SeqStack *s) //x是不会改变的 { char x; if(Empty(s)) return NULL; else { x=s->data[s->top--]; return x; } } char Top(SeqStack *s) { if(Empty(s)) return 0; else return(s->data[s->top]); } void main() { char w='\0',a; SeqStack *s=NULL; s=Init(); // cout<<s->top; cout<<"please enter a number"; cin>>a; push(a,s); w=pull(s); cout<<w<<endl; }
作者: keiy 发布时间: 2011-12-11
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28