栈是限定仅在表尾进行插入和删除操作的线性表。栈的特性是后进先出(last in first out)。对于栈的两种操作压栈Push和出栈Pop,有一个非常有趣的段子,如何辨别一个人是不是程序员,那就问他Push的反义词是啥。回答Pull的肯定不是,回答Pop的才是真正的程序员!

栈的示意图
一.顺序栈

#include<iostream>
using namespace std;

const int StackSize=100;
template<class T>
class SeqStack
{
	T data[StackSize];
	int top;    //栈顶指针,指示栈顶元素在数组中的下标
public:
    SeqStack();     //构造函数 
	~SeqStack(){}   //析构函数 
	void Push(T x);   //将x入栈 
	T Pop();   //弹出栈顶元素
	T GetTop();  //取栈顶元素
	bool Empty();   //判断栈是否为空
	int Top()    //返回栈顶值 
	{
		return top;
	} 
};

template<class T>
SeqStack<T>::SeqStack()
{
	top=-1;  
}

template<class T>
void SeqStack<T>::Push(T x)    //压栈操作 
{
	data[++top]=x;    //这里就是top初值不能赋为0的原因 
} 

template<class T>
T SeqStack<T>::Pop()
{
	return data[top--];
	//上面一句可展开
	//T x=data[top--];
	//return x; 
}

template<class T>
T SeqStack<T>::GetTop()
{
	return data[top];
}

template<class T>
bool SeqStack<T>::Empty()
{
	if(top==-1)return 1;
	else return 0;
}

int main()
{
	SeqStack<int> a;
	cout<<"示例:对10和15进行入栈"<<endl;
	a.Push(10);
	a.Push(15);
	cout<<"栈顶元素为:"<<endl;
	cout<<a.GetTop()<<endl;
	cout<<"执行出栈操作:"<<endl;
	cout<<a.Pop()<<endl;
	cout<<"栈顶元素为:"<<endl;
	cout<<a.GetTop()<<endl;
	return 0; 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值