zoukankan      html  css  js  c++  java
  • 线性表-链表栈

      1: //linkstack.cpp
    
      2: 
    
      3: #ifndef LINKSTACK_CPP_CPP
    
      4: #define LINKSTACK_CPP_CPP
    
      5: 
    
      6: #include <iostream>
    
      7: #include "linkstack.h"
    
      8: 
    
      9: template<class T>
    
     10: LinkStack<T>::LinkStack()
    
     11: {
    
     12:   head = new Node<T>;
    
     13:   head->next = NULL;
    
     14: }
    
     15: 
    
     16: 
    
     17: template<class T>
    
     18: LinkStack<T>::LinkStack(T data[],int size)
    
     19: {
    
     20:   head = new Node<T>;
    
     21:   Node<T> * newNode;
    
     22:   head->next = NULL;
    
     23:   for(int i = 0; i < size; ++i)
    
     24:   {
    
     25:     newNode = new Node<T>;
    
     26:     newNode->data = data[i];
    
     27:     newNode->next = head->next;
    
     28:     head->next = newNode;
    
     29:   }
    
     30: } 
    
     31: 
    
     32: template<class T>
    
     33: LinkStack<T>::~LinkStack()
    
     34: {
    
     35:   Node<T> * ptrNode,* tempNode;
    
     36:   ptrNode = head;
    
     37:   while(ptrNode)
    
     38:   {
    
     39:     tempNode = ptrNode;
    
     40:     ptrNode = ptrNode->next;
    
     41:     delete tempNode;
    
     42:   }
    
     43:   head = NULL;
    
     44: }
    
     45: 
    
     46: template<class T>
    
     47: void LinkStack<T>::Push(const T &item)
    
     48: {
    
     49:   Node<T> * newNode = new Node<T>;
    
     50:   newNode->data = item;
    
     51:   newNode->next = head->next;
    
     52:   head->next = newNode;
    
     53: }
    
     54: 
    
     55: template<class T>
    
     56: T LinkStack<T>::Pop()
    
     57: {
    
     58:   T data = head->next->data;
    
     59:   head->next = head->next->next;
    
     60:   return data;
    
     61: }
    
     62: 
    
     63: template<class T>
    
     64: T LinkStack<T>::GetTop()
    
     65: {
    
     66:   T data = head->next->data;
    
     67:   return data;
    
     68: }
    
     69: 
    
     70: template<class T>
    
     71: bool LinkStack<T>::Empty() const
    
     72: {
    
     73:   return (NULL == head->next);
    
     74: }
    
     75: 
    
     76: template<class T>
    
     77: void LinkStack<T>::Clear()
    
     78: {
    
     79:   head->next = NULL;
    
     80: }
    
     81: 
    
     82: #endif
      1: //linkstack.h
    
      2: 
    
      3: #ifndef LINKSTACK_H_H
    
      4: #define LINKSTACK_H_H
    
      5: 
    
      6: #include <iostream>
    
      7: using namespace std;
    
      8: 
    
      9: template<class T>
    
     10: struct Node
    
     11: {
    
     12: 
    
     13:   T data;
    
     14:   Node<T> * next;
    
     15: public:
    
     16:   Node()
    
     17:   {
    
     18: 
    
     19:   }
    
     20: 
    
     21:   Node(T _data,Node * _next = NULL)
    
     22:   {
    
     23:     data = _data;
    
     24:     next = _next;
    
     25:   }
    
     26: };
    
     27: 
    
     28: template<class T>
    
     29: class LinkStack
    
     30: {
    
     31: private:
    
     32:   Node<T> * head;//top
    
     33: 
    
     34: public:
    
     35:   LinkStack();
    
     36:   LinkStack(T data[],int size);
    
     37:   ~LinkStack();
    
     38: 
    
     39:   void Push(const T &item);
    
     40:   T Pop();
    
     41:   T GetTop();
    
     42: 
    
     43:   bool Empty() const;
    
     44: 
    
     45:   void Clear();
    
     46: 
    
     47: };
    
     48: 
    
     49: #endif
      1: //test.cpp
    
      2: #include "linkstack.h"
    
      3: #include "linkstack.cpp"
    
      4: #include <iostream>
    
      5: using namespace std;
    
      6: 
    
      7: int main(int argc, char *argv[])
    
      8: {
    
      9:   int data[] = {1,2,3,4,5,6,7,8,9,10};
    
     10:   LinkStack<int> stack(data,10);
    
     11: 
    
     12:   while(!stack.Empty())
    
     13:   {
    
     14:     cout<<stack.Pop()<<endl;
    
     15:   }
    
     16: 
    
     17:   return 0;
    
     18: }
    作者:Lucas Hsueh
    文章部分是自己的学习体会、代码等,还有收集和整理其他技术牛人的文章。
  • 相关阅读:
    python 数据类型之列表(list)
    Python 数据类型之字符串(string)
    Python 基本语法
    Windows系统下Pycharm的安装与使用
    Windows系统下安装Python
    Fiddler Session List会话列表(监控面板)
    fiddler 常用快捷键
    fiddler 工具栏介绍
    SEPM:USB 权限管理(1)--通知权限过期用户即将卸载权限事宜
    终端管理:计算机违规软件清理 (未完待续)
  • 原文地址:https://www.cnblogs.com/lucas-hsueh/p/3711335.html
Copyright © 2011-2022 走看看