栈的链式存储结构 链栈(Linked Stack) C++

简介: 栈的链式存储结构 链栈(Linked Stack) C++

StackNode.h

#ifndef __STACKNODE_H__
#define __STACKNODE_H__
template <class T>
class StackNode
{
public:
  T data;
  StackNode<T>* nextNode;
};
#endif


StackList.h

#ifndef __STACKLIST_H__
#define __STACKLIST_H__
#include "StackNode.h"
template <class T>
class StackList
{
private:
  StackNode<T>* top;
public:
  StackList();
  ~StackList();
  void Push(T _data);
  T Pop();
  T getTop();
  bool isEmpty();
};
#endif


StackList.cpp

#include "StackList.h"
#include <iostream>
#include <string>
using namespace std;
template <class T>
StackList<T>::StackList()
{
  top = nullptr;
}
template <class T>
StackList<T>::~StackList()
{
  while(top != nullptr)
  {
  StackNode<T>* deleteNode = new StackNode<T>;
  deleteNode = top;
  top = top->nextNode;
  delete deleteNode;
  }
}
template <class T>
void StackList<T>::Push(T _data)
{
  StackNode<T>* newNode = new StackNode<T>;
  newNode->data = _data;
  newNode->nextNode = top;
  top = newNode;
}
template <class T>
T StackList<T>::Pop()
{
  T tempData = top->data;
  StackNode<T>* tempNode = new StackNode<T>;
  tempNode = top;
  top = top->nextNode;
  delete tempNode;
  return tempData;
}
template <class T>
T StackList<T>::getTop()
{
  return top->data;
}
template <class T>
bool StackList<T>::isEmpty()
{
  if(top == nullptr)
  return true;
  return false;
}


LinkedStack.cpp

#include <iostream>
#include <string>
#include "StackList.h"
#include "StackList.cpp"
using namespace std;
int main()
{
  StackList<string>* stack = new StackList<string>;
  cout << stack->isEmpty() << endl;
  stack->Push("test0");
  stack->Push("test1");
  stack->Pop();
  cout << stack->getTop() << endl;
  return 0;
}


相关文章
|
1月前
|
存储 算法 调度
【C++打怪之路Lv11】-- stack、queue和优先级队列
【C++打怪之路Lv11】-- stack、queue和优先级队列
33 1
|
1月前
|
设计模式 存储 C++
C++之stack 和 queue(下)
C++之stack 和 queue(下)
35 1
|
1月前
|
C++ 容器
C++之stack 和 queue(上)
C++之stack 和 queue(上)
55 0
|
1月前
|
存储 C++ 容器
C++番外篇——stack、queue的实现及deque的介绍
C++番外篇——stack、queue的实现及deque的介绍
25 0
|
1月前
|
存储 算法 C++
C++入门10——stack与queue的使用
C++入门10——stack与queue的使用
42 0
|
1月前
|
算法 C++
|
1月前
|
算法 C++
【算法单调栈】 矩形牛棚(C/C++)
【算法单调栈】 矩形牛棚(C/C++)
|
1月前
|
设计模式 存储 C++
【C++】C++ STL探索:容器适配器 Stack 与 Queue 的使用及模拟实现(二)
【C++】C++ STL探索:容器适配器 Stack 与 Queue 的使用及模拟实现
|
1月前
|
存储 C++ 容器
【C++】C++ STL探索:容器适配器 Stack 与 Queue 的使用及模拟实现(一)
【C++】C++ STL探索:容器适配器 Stack 与 Queue 的使用及模拟实现
|
10天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
37 4