C++ 栈

栈是顺序表或者单链表的一种特殊表现形式,也就是栈的基础是顺序表和单链表。栈是一种元素满足先进后出(LIFO)规则的线性表。这种要求也决定了栈的操作是在表尾(栈顶)进行。一般来说,我们将栈的表头称为栈底,将栈的表尾称为栈顶,向栈内添加元素,我们称为入栈(push),删除元素我们称为出栈(pop)。栈一旦形成,栈底的位置固定,没有任何元素的栈叫做空栈,随着元素的增加,栈顶指针会上移;随着元素的出栈,栈顶的指针会下移靠近栈底指针,当栈顶指针越过栈底时,栈清空位空栈。

template<typename datatype>class stack
{
public:
stack(int size)
{
maxsize=size;
top=-1;//初始化为空栈//
elements=new datatype[size];//分配空间//
}
~stack()
{
delete[]elements;
}
bool push(datatype data);//入栈函数//
datatype pop();//出栈函数//
private:
datatype *elements;
int top;
int maxsize;
}

入栈操作:

template<typename datatype>bool stack<datatype>::push(datatype data)
{
if(top==maxsize)//判断是否满栈//
return false;
elements[++top]=data;//++top是因为我们设top=-1//
return true;
}

出栈操作:

template<typename datatype>datatype stack<datatype>::pop()
{
if(top==-1)//判断是否空栈//
exit(1);
return elements[top--];//top--就是返回栈顶元素,同时top指向下一个元素//
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值