顺序栈的自我练习

//seqstack.h

#ifndef SEQSTACK_H
#define SEQSTACK_H
#include <iostream>
using namespace std;
const int stacksize=20;
template <class T>
class SeqStack
{
public:
	SeqStack(){top=-1;}
	void Push(T x);
	T Pop();
	T GetTop();
	bool Empty(){return (top==-1? 1:0);}
	void Print(int n);      //输出第n个元素
private:
	int top;
	T data[stacksize];
};
template <class T>
void SeqStack<T>::Push(T x)
{
	if(top==stacksize-1) throw "上溢";
	top++;
	data[top]=x;
}
template <class T>
T SeqStack<T>::Pop()
{
	if(top==-1) throw "下溢";
	int x=data[top];
	top--;
	return x;
}
template <class T>
T SeqStack<T>::GetTop()
{
	if(Empty())throw "顺序栈为空";
	else 
		return data[top];
}
template <class T>
void SeqStack<T>::Print(int n)
{
	if(n>top) throw "该位置没有元素!";
	cout<<data[n]<<" ";
	cout<<endl;
}
#endif


//main.cpp

#include "seqstack.h"
void main()
{
	int a[5]={5,6,7,8,9};
	SeqStack<int> seq;
	for(int i=0;i<5;i++)
		seq.Push(a[i]);
	try
	{
		cout<<"刚建立的顺序栈中第六个元素为多少?"<<endl;
		seq.Print(6);
	}
	catch(char*)
	{
		cout<<"刚建立的顺序栈中没有第六个元素,只有五个元素,如下:\n";
	}
	for(int j=0;j<5;j++)
	{
		cout<<"data["<<j<<"]=";
    	seq.Print(j);
	}
	cout<<"\n头指针为:data[top]="<<seq.GetTop()<<endl<<endl;
    cout<<"依次出栈的元素:";
	for(int m=0;m<5;m++)
		cout<<seq.Pop()<<" ";
	cout<<endl;
	cout<<"此时顺序栈是否为空?"<<endl;
	if(seq.Empty()) cout<<"是"<<endl;
	else cout<<"不是"<<endl;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值