
#include
#include
using namespace std;
typedef struct node
{
int data;
struct node next;
}LinkStack;
void InitStack(LinkStack &s) {
s = NULL;
}
void pushStack(LinkStack &s) {
int x;
LinkStack p;
cout << “请输入数据,直到输入-1结束”;
cin >> x;
while (x != -1) {
p = new node;
p->data = x;
p->next = s;
s = p;
cin >> x;
}
}
void popStack(LinkStack &s) {
LinkStack p;
if (s==NULL) {
cout << “该栈为空” << endl;
}
while (s!=NULL) {
p = s;
cout << p->data<<” “;
s = s->next;
delete p;
}
cout << endl;
}
void DestoryStack(LinkStack &s) {
LinkStack p;
while (s != NULL) {
p = s;
s = s->next;
delete p;
}
}
bool StackEmpty(LinkStack &s) {
return s == NULL;
}
void check(LinkStack &s) {
if (StackEmpty(s)) {
cout << “该栈为空” << endl;
}
else {
cout << “该栈不为空” << endl;
}
}
int main() {
LinkStack s;
InitStack(s);
pushStack(s);
check(s);//栈中有数据,检查不为空
popStack(s);//栈的最后一个节点为NULL,所以出栈完全后S指向最后一个节点,所以S==NULL;
check(s);//所以检查为空栈
DestoryStack(s);//此时栈已经在出栈的过程中被销毁
check(s);//所以检查为空
return 0;
}




近期评论