1.(1)
#include<iostream>
using namespace std;
const int maxsize=100;
template<class datatype>
class zhan
{
private:
datatype data[maxsize];
int top;
public:
zhan()
{
top=-1;
}
~zhan()
{
cout<<"我是析构函数"<<endl;
}
void push(datatype x);
datatype pop();
datatype gettop()
{
if(top!=-1)
return data[top];
return 0;
}
void empty()
{
if(top==-1)
cout<<"enpty"<<endl;
else
cout<<"not empty"<<endl;
}
};
template<class datatype>
void zhan<datatype>::push(datatype x)
{
if(top==maxsize-1)
throw("full");
else
data[++top]=x;
}
template<class datatype>
datatype zhan<datatype>::pop()
{
if(top==-1)
throw("empty");
datatype x;
x=data[top--];
return x;
}
int main()
{
zhan<int> p;
p.empty();
p.push(5);
p.push(4);
p.push(3);
p.push(2);
p.push(1);
cout<<p.gettop()<<endl;
p.empty();
for(int i=0;i<5;i++)
{
cout<<p.pop()<<endl;
}
p.empty();
return 0;
}
(2)#include<iostream>
using namespace std;
template<class datatype>
struct node
{
datatype data;
node<datatype>*next;
};
template<class datatype>
class zhan
{
private:
node<datatype>*top;
public:
zhan()
{
top=NULL;
}
~zhan()
{
cout<<"我是析构函数"<<endl;
}
void push(datatype x);
datatype pop();
datatype gettop()
{
if(top!=NULL)
return top->data;
return 0;
}
void empty()
{
if(top==NULL)
cout<<"empty"<<endl;
else
cout<<"not empty"<<endl;
}
};
template<class datatype>
void zhan<datatype>::push(datatype x)
{
node<datatype>*s=new node<datatype>;
s->data=x;
s->next=top;
top=s;
}
template<class datatype>
datatype zhan<datatype>::pop()
{
if(top==NULL)
throw("EMPTY");
node<datatype>*p=new node<datatype>;
p=top;//暂时存放
datatype x;
x=top->data;
top=top->next;
delete p;
return x;
}
int main()
{
int n;
zhan<int> p;
for(int i=0;i<5;i++)
{
cin>>n;
p.push(n);
}
p.empty();
cout<<p.gettop()<<endl;
for(i=0;i<5;i++)
{
cout<<p.pop()<<endl;
}
p.empty();
return 0;
}
数据结构顺序和栈的代码
最新推荐文章于 2023-11-25 16:32:43 发布