题目:自己动手实现一个顺序栈,并实现判空、判满、push、pop等操作。
备注:也可以试着用c++的stack对象实现判空、判满、push、pop等操作。
完整代码如下:
#include<iostream>
#include<stack>
using namespace std;
#define maxSize 5
typedef struct{
int elem[maxSize];
int top = -1;
}SqStack;
bool isEmpty(SqStack& s){//判空
return s.top == -1;
}
bool isFull(SqStack& s){//判满
return s.top == maxSize - 1;
}
bool push(SqStack& s, int x){//元素进栈
if(isFull(s)) return false;
s.elem[++ s.top] = x;
return true;
}
bool pop(SqStack& s, int& x){//元素出栈
if(isEmpty(s)) return false;
x = s.elem[s.top --];
return true;
}
int main(){
SqStack s1;
cout<<"s1是否为空:"<<isEmpty(s1)<<endl;
push(s1, 1);
cout<<"栈顶:"<<s1.elem[s1.top]<<endl;
int x;
pop(s1, x);
cout<<"s1是否为满:"<<isFull(s1)<<endl;
stack<int> s2;
cout<<"s2是否为空:"<<s2.empty()<<endl;
s2.push(1);
cout<<"栈顶:"<<s2.top()<<endl;
s2.pop();
cout<<"s2是否为空:"<<s2.empty()<<endl;
}
运行结果如下:
更多代码请参考:手撕考研数据结构(代码汇总)