一段关于堆栈的代码,怎末实现不了啊,帮忙改改啊

来源:百度知道 编辑:UC知道 时间:2024/06/03 17:22:55
\\哪位大虾帮帮忙啊,急呀
#include<iostream>
#include<vector>
#include<stdexcept>
using namespace std;
template<class T>
class Stack
{
private:vector<T> vec;
public:Stack();
bool Isempty() {return vec.empty();}
int Size() {return vec.size();}
T&Top();
const T&Top() const;
void Push(const T&x);
void Pop();
};
template<class T>
void Stack<T>::Push(const T&x)
{ vec.push_back(x);}
template<class T>
T&Stack<T>::Top()
{
if(Isempty())
throw underflow_error("stack is empty!");
return vec.back();
}
template<class T>
const T&Stack<T>::Top() const
{
if(Isempty())
throw underflow_error("stack is empty!");
return vec.back();
}
template<class T>
void Stack<T>::Pop()
{
if(Isempty())
t

你可以参考一下下面的代码:
#include <iostream.h>
class stack; //前向声明stack类
class node
{
private:
int data;
node *prev;
public:
node(int d,node *n)
{
data=d;
prev=n;
}
friend class stack; //定义友元类
};

class stack
{
private:
node *top;
public:
stack(){top=0;}
void push(int i);
int pop();
};
void stack::push (int i)
{
node *n=new node(i,top);
top=n;
}
int stack::pop ()
{
node *t=top;
if(top)
{
top=top->prev;
int c=t->data;
delete t;
return c;
}
return 0;
}
main()
{
int c;
stack s;
for(int j=0;j<10;++j)
{
cin>>c;
s.push (c);
}
for(j=0;j<10;++j)
cout<<s.pop ()<<" ";
cout<<endl;
return 1;
}