栈源代码(c++)

stack.h

#ifndef STACK_H_
#define STACK_H_
#include<iostream>
template<class T>
struct Node
{
 T data;
 Node<T>* next;
};
template<class T>
class Stack
{
private:
 Node<T>* top;
public:
 Stack() { top = nullptr; }
 ~Stack();
 void Push(T x);
 void Pop();
 T GetTop();
 bool Empty();
 void Print();
};
template<class T>
Stack<T>::~Stack()
{
 Node<T>* p = top;
 while (p)
 {
  top = p;
  p = p->next;
  delete top;
 }
}
template<class T>
void Stack<T>::Push(T x)
{
 Node<T>* p = new Node<T>;
 p->data = x;
 p->next = top;
 top = p;
}
template<class T>
void Stack<T>::Pop()
{
 if (Empty())throw"Empty";
 Node<T>* temp = top;
 top = top->next;
 delete temp;
}
template<class T>
T Stack<T>::GetTop()
{
 return top->data;
}
template<class T>
bool Stack<T>::Empty()
{
 return (top == nullptr ? true : false);
}
template<class T>
void Stack<T>::Print()
{
 Node<T>* p = top;
 while (p)
 {
  std::cout << p->data << " ";
  p = p->next;
 }
 std::cout << std::endl;
}
#endif // !STACK_H_

UseStack.cpp

#include<iostream>
#include"stack.h"
int main()
{
 using std::cout;
 using std::endl;
 Stack<int> P1;
 for (int i = 1; i <= 10; i++)
 {
  P1.Push(i);
 }
 if (P1.Empty())
 {
  std::cout << "empty\n";
 }
 else
 {
  cout << "原有:\n";
  P1.Print();
  P1.Pop();
  cout << "After Delete:\n";
  P1.Print();
  cout << "栈顶:" << P1.GetTop();
 }
 return 0;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m晴朗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值