.h文件:
/*栈的链式存储*/
#include <iostream>
using namespace std;
typedef int ElemType;
struct LNode
{
ElemType data;
LNode *next;
};
//初始化
void InitStack(LNode* &HS)
{
HS = NULL;
}
//清空栈
void ClearStack(LNode* &HS)
{
LNode *cp = HS,*np;
while(cp != NULL)
{
np = cp->next;
delete cp;
cp = np;
}
HS = NULL;
}
//检查栈是否为空
int StackEmpty(LNode* &HS)
{
return (HS == NULL);
}
//读取栈顶元素
ElemType Peek(LNode* &HS)
{
if(HS == NULL)
{
cerr<<"Linked stack is empty!"<<endl;
exit(1);
}
return HS->data;
}
//入栈操作
void Push(LNode* &HS, const ElemType &item)
{
LNode *newptr = new LNode;
if(newptr == NULL)
{
cerr<<"Memory allocation failare!"<<endl;
exit(1);
}
newptr->data = item;
newptr->next = HS;
HS = newptr;
}
//出栈操作
ElemType Pop(LNode* &HS)
{
if(HS == NULL)
{
cerr<<"Linked stack is empty!"<<endl;
exit(1);
}
LNode *p = HS;
ElemType temp = p->data;
HS = HS->next;
delete p;
return temp;
}