• 数据结构学习记录连载6(堆栈的学习续)


    说明:继承链表实现链式堆栈。

    1.LinkStack.h

    #include "LinkList.h"

    template <class T>
    class LinkStack:public LinkList<T> 
    {
    public:
     LinkStack();
     virtual ~LinkStack();

     void Push(const T& item); //元素item入栈
        T Pop(void);   //出栈元素并返回
     T Peek(void) const;  //读栈顶元素并返回
     int StackIsEmpty(void) const;  
     int GetSize(void) const;
     void ClearStack(void);
    };

    2.LinkStack.cpp

    /*
    * Copyright (c) 2009,FreshAir团队嵌入式软件研发组
    * All rights reserved.
    *
    * 文件名称:LinkStack.cpp
    * 摘 要: 链式堆栈的各个功能函数的现实
    *
    * 当前版本:1.0
    * 作 者: 吴友强
    * 完成日期:2009年10月16日
    *
    * 取代版本:
    * 原作者 :
    * 完成日期:
    */
    #include "LinkStack.h"
    template <class T>
    LinkStack<T>::LinkStack()
    {

    }

    template <class T>
    LinkStack<T>::~LinkStack()
    {

    }

    template <class T>
    void LinkStack<T>::Push(const T& item) //元素item入栈
    {
     Insert(item, GetListSize());
    }

    template <class T>
    T LinkStack<T>::Pop(void)    //出栈元素并返回
    {
     if (GetListSize() == 0)
     {
      cout << "堆栈以空!" << endl;
      exit(0);
     }

     return Delete(GetListSize() - 1);
    }

    template <class T>
    T LinkStack<T>::Peek(void) const   //读栈顶元素并返回
    {
     if (GetListSize() == 0)
     {
      cout << "堆栈以空!" << endl;
      exit(0);
     }
     return GetData(GetListSize() - 1);
    }

    template <class T>
    int LinkStack<T>::StackIsEmpty(void) const
    {
     return ListIsEmpty();
    }  

    template <class T>
    int LinkStack<T>::GetSize(void) const
    {
     return GetListSize();
    }

    template <class T>
    void LinkStack<T>::ClearStack(void)
    {
     ClearList();
    }

    3.LinkListTest.cpp

    /*
    * Copyright (c) 2009,FreshAir团队嵌入式软件研发组
    * All rights reserved.
    *
    * 文件名称:LinkListTest.cpp
    * 摘 要: 测试程序-10进制和8进制的相互转化
    *
    * 当前版本:1.0
    * 作 者: 吴友强
    * 完成日期:2009年10月16日
    *
    * 取代版本:
    * 原作者 :
    * 完成日期:
    */

    #include <iostream.h>
    #include <stdlib.h>

    #include "LinkStack.h"

    int main(int argc, char *argv[])
    {
     LinkStack<int> myStack;
     int jz, num, temp,result;
     result = 0;
     int i, j;
     cout << "请选择输入的是十进制还是八进制(0,1):" ;
     cin >> jz;
     cout << "请输入需要转换的数字:";
     cin >> num;
     
     if (jz == 0)
     {
      while (num / 8 != 0)
      {
       temp = num % 8;
       myStack.Push(temp);
       num = num / 8;
      }
      myStack.Push(num); //将最高位也入栈
      for (i=myStack.GetListSize()-1; i>=0; i--)
      {
       temp = myStack.Pop();
       for (j=0; j<i; j++)
       {
        temp *= 10;
       }
       result += temp;
      }
      cout << "result is: 0" << result << endl;
     }
     else if (jz == 1)
     {
      while (num / 10 != 0)
      {
       temp = num % 10;
       myStack.Push(temp);
       num = num / 10;
      }
      myStack.Push(num);
      for (i=myStack.GetListSize()-1; i>=0; i--)
      {
       temp = myStack.Pop();
       for (j=0; j<i; j++)
       {
        temp *= 8;
       }
       result += temp;
      }
      cout << "result is: " << result << endl;
     }
     else
     {
      cout << "输入出错,程序退出!" << endl;
      exit(0);
     }
     
     return 0;
    }

  • 相关阅读:
    【网络/通信】概念的理解 —— 带宽、吞吐量、净荷
    在线视频教程
    Topological Spaces(拓扑空间)
    Topological Spaces(拓扑空间)
    open ball、closed ball 与 open set、closed set(interior point,limit point)、dense set
    open ball、closed ball 与 open set、closed set(interior point,limit point)、dense set
    python 书籍推荐 三
    python 书籍推荐 二
    python 书籍推荐 一
    2015年你需要了解的15门编程语言
  • 原文地址:https://www.cnblogs.com/brucewoo/p/2252047.html
Copyright © 2020-2023  润新知