实现顺序栈的初始化、出栈、入栈,取栈顶、遍历栈操作
# include <iostream>
# define ok 1
# define error 0
# define MAXSIZE 100
using namespace std;
struct SqStack {
int * base;
int * top;
int stacksize;
} ;
int InitStack ( SqStack & s) {
s. base = new int [ MAXSIZE] ;
if ( ! s. base) {
return error;
}
s. top = s. base;
s. stacksize = MAXSIZE;
return ok;
}
int push ( SqStack & s, int data) {
if ( s. top - s. base == s. stacksize) {
return error;
}
* s. top++ = data;
return ok;
}
int pop ( SqStack & s, int & data) {
if ( s. base == s. top) {
return error;
}
data = * -- s. top;
return ok;
}
int getTop ( SqStack s) {
if ( s. top != s. base) {
return * -- s. top;
}
}
int print ( SqStack s) {
if ( s. base == s. top) {
return error;
}
cout<< "从栈底往栈顶遍历:" ;
while ( s. base != s. top) {
cout<< * s. base++ << " " ;
}
return 1 ;
}
int main ( ) {
SqStack s;
int num, data, outdata;
if ( InitStack ( s) ) {
cout<< "分配内存成功\n" ;
} else {
cout<< "分配内存失败\n" ;
}
cout<< "输入入栈的数据个数: " ;
cin>> num;
for ( int i= 0 ; i< num; i++ ) {
cin>> data;
push ( s, data) ;
}
print ( s) ;
cout<< "\n栈顶元素为:" << getTop ( s) << endl;
cout<< "执行出栈操作...\n" ;
pop ( s, outdata) ;
cout<< "出栈的元素是:" << outdata<< endl;
cout<< "出栈结果:" ;
print ( s) ;
return 0 ;
}