构造链栈类
typedef struct StackNode
{
SElemType data;
struct StackNode* next;
}StackNode, * LinkStack;
函数实现
void InitStack(LinkStack& S)
{
S = NULL;
}
int Push(LinkStack& S, SElemType e)
{
StackNode* p = new StackNode;
p->data = e;
p->next = S;
S = p;
return 1;
}
int Pop(LinkStack& S, SElemType& e)
{
if (S == NULL) return 0;
StackNode* p = S;
e = S->data;
S = S->next;
delete p;
return 1;
}
SElemType GetTop(LinkStack S)
{
if (S != NULL)
return S->data;
}
void printStack(LinkStack S)
{
printf("栈顶->");
StackNode* p = S;
while (p != NULL)
{
cout << p->data << endl;
p = p->next;
}
}
测试
int main()
{
LinkStack S;
int e;
InitStack(S);
cout << "请输入一个要入栈的元素:" << endl;
cin >> e;
Push(S, e);
printStack(S);
cout << "请输入一个要入栈的元素:" << endl;
cin >> e;
Push(S, e);
printStack(S);
cout << "出栈测试:" << endl;
Pop(S, e);
printStack(S);
cout << "取栈顶元素测试:"<< endl;
e = GetTop(S);
cout << "取出的栈顶元素为:" << e << endl;
}