详细代码如下:
#include<iostream>
using namespace std;
template<class T>
struct Node {
T data;
Node<T>* next;
};
template<class T>
class Linkstack {
public:
Linkstack();
~Linkstack();
void Push(T x);
T Pop();
T Gettop();
int Empty();
private:
Node<T>* top;
};
//链栈的初始化
template<class T>
Linkstack<T>::Linkstack() {
top = new Node<T>;
top->next = NULL;
}
//销毁
template<class T>
Linkstack<T>::~Linkstack() {
Node<T>* p =top;
while (top != NULL) {
top = top->next;
delete p;
p = top;
}
}
//链栈的入栈
template<class T>
void Linkstack<T>::Push(T x) {
Node<T>* s = NULL;
s = new Node<T>;
s->data = x;
s->next = top;
top = s;
}
//链栈的出栈
template<class T>
T Linkstack<T>::Pop() {
if (top->next==NULL) { cout << "链栈为空,无法进行出栈" << endl; }
else {
Node<T>* p = top;
T x = p->data;
top = top->next;
delete p;
return x;
}
return 0;
}
//链栈的取栈
template<class T>
T Linkstack<T>::Gettop() {
if (top ==NULL) {
cout << "栈为空,取栈失败" << endl;
}
else { cout <<top->data << endl; }
return 0;
}
//链栈的判空
template<class T>
int Linkstack<T>::Empty() {
if (top==NULL) { cout << "链栈为空" << endl; }
else { cout << "链栈不为空" << endl; }
return 0;
}
int main() {
Linkstack<int>s;
s.Push(13);
s.Push(13);
s.Pop();
s.Gettop();
s.Empty();
}
有帮助就点个关注点个赞呗,谢谢。