#include<stdio.h>
#include<stdlib.h>
#define MAX 5
typedef struct{
int *top;
int *base;
int size;
}sqstack;
void initstack(sqstack &s){
// sqnode *p;
s.base=(int*)malloc(sizeof(int));
if(s.base!=NULL)
s.top=s.base;
}
int push(sqstack &s,int e){//元素E入栈S
*s.top=e;
s.top++;
++s.size;
return 0;
}
int pop(sqstack &s){//元素出栈
int e;
e=*--s.top;
printf("%7d",e);
return e;
}
int gettop(sqstack s,int e){//用E返回栈的栈顶元素
if(s.size>0){
e=*(s.top-1);
}
return e;
}
int main(){
sqstack s;
int i,e;
s.size=0;
initstack(s);
printf("现在是元素入栈:");
for(i=1;i<=MAX;i++){
scanf("%d",&e);
push(s,e);
}
printf("它的栈顶元素是%d.\n",gettop(s,e));
printf("现在是元素出栈:");
for(i=1;i<=MAX;i++){
e=pop(s);
printf("%3d",e);//问题在这里,在出栈输出后,怎么都是‘0’呀?
}
printf("\n");
return 0;
}
可以通过引用来改变主函数的栈的内容
#include<stdlib.h>
#define MAX 5
typedef struct{
int *top;
int *base;
int size;
}sqstack;
void initstack(sqstack &s){
// sqnode *p;
s.base=(int*)malloc(sizeof(int));
if(s.base!=NULL)
s.top=s.base;
}
int push(sqstack &s,int e){//元素E入栈S
*s.top=e;
s.top++;
++s.size;
return 0;
}
int pop(sqstack &s){//元素出栈
int e;
e=*--s.top;
printf("%7d",e);
return e;
}
int gettop(sqstack s,int e){//用E返回栈的栈顶元素
if(s.size>0){
e=*(s.top-1);
}
return e;
}
int main(){
sqstack s;
int i,e;
s.size=0;
initstack(s);
printf("现在是元素入栈:");
for(i=1;i<=MAX;i++){
scanf("%d",&e);
push(s,e);
}
printf("它的栈顶元素是%d.\n",gettop(s,e));
printf("现在是元素出栈:");
for(i=1;i<=MAX;i++){
e=pop(s);
printf("%3d",e);//问题在这里,在出栈输出后,怎么都是‘0’呀?
}
printf("\n");
return 0;
}
可以通过引用来改变主函数的栈的内容
Sv少 run