#include"stdafx.h"
#include<iostream>
using namespace std;
struct SeqStack {
int top;
int Max;
int *S;
};
typedef struct SeqStack *PStack;
PStack InitiaStack(int m) {
PStack p = (PStack)malloc(sizeof(struct SeqStack));//申请空间
if (p!=NULL)
{
p->S = (int *)malloc(sizeof(struct SeqStack)*m);
if (p->S) {
p->Max = m;
p->top = -1;
return p;
}
}
else
{
free(p);
}
cout << "创建失败" << endl;
return NULL;
}
int Empty(PStack pstack) {//检查栈是否为空
return pstack-> top == -1;
}
int Full(PStack pstack) {//检查栈满
return pstack-> top == pstack->Max - 1;
}
int GetTop(PStack pstack) {//获取栈顶
int item;
if (Empty(pstack))
{
cout << "空栈" << endl;
return 0;
}
else
{
item =pstack->S[pstack->top];
cout << "当前栈顶元素为" << item << endl;
return 1;
}
}
int Push(PStack pstack, int item) {
if (Full(pstack))
{
cout << "当前栈空间不足,请结束进栈操作" << endl;
return 0;
}
else
{
pstack->S[++pstack->top] = item;//进栈,修改栈顶
cout << "当前进栈元素为:" << item << endl;
return 1;
}
}
int Pop(PStack pstack) {
int item;
if (Empty(pstack))
{
return 0;
}
else
{
item = pstack->S[pstack->top--];
cout << item << "出栈成功" << endl;
return 1;
}
}
int main() {
cout << "请输入栈的容量:" << endl;
int m;
cin >> m;
PStack p=InitiaStack(m);
int item;
cout << "请输入进栈元素,以0结束" << endl;
while (true)
{
cin >> item;
if (item)
{
Push(p,item);
}
else
{
break;
}
}
Pop(p);
GetTop(p);
return 0;
}
ALin
多看多思考,动脑也动手。