zoukankan      html  css  js  c++  java
  • 数据结构学习记录连载5(堆栈的学习)

    基本要求:

    1) 用继承顺序表类SeqList的方法建立顺序栈类SeqStack,编写程序实现十进制数和八进制数的转换;

    2) 用继承链表类LinList的方法建立顺序栈类LinStack,编写程序实现十进制数和八进制数的转换;

    提高要求:

    1) 直接类定义和实现方法建立顺序栈类SeqStack,编写程序实现十六进制数和八进制数的转换。

    2) 直接类定义和实现方法建立顺序栈类LinStack,编写程序实现十六制数和八进制数的转换。

    说明:基本要求是用继承的方式,前面的文章给出了被继承的类,这里只给出完整的堆栈实现。

    1.SeqStack.h的代码:

    #include "SeqList.h"

    class SeqStack : private SeqList 
    {
    public:
     SeqStack();
     virtual ~SeqStack();

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

    2.SeqStack.cpp的实现代码

    /*
    * Copyright (c) 2009,FreshAir团队嵌入式软件研发组
    * All rights reserved.
    *
    * 文件名称:SeqStack.cpp

           * 摘 要: 顺序堆栈的实现
    *
    * 当前版本:1.0
    * 作 者: 吴友强
    * 完成日期:2009年10月16日
    *
    * 取代版本:
    * 原作者 :
    * 完成日期:
    */
    #include "SeqStack.h"
    SeqStack::SeqStack()
    {
     SeqList();
    }

    SeqStack::~SeqStack()
    {

    }

    void SeqStack::Push(const DataType& item)  //元素item入栈
    {
     if (GetListSize() == MaxListSize)
     {
      cout << "堆栈已满!" << endl;
      exit(0);
     }
     
     Insert(item, GetListSize());
    }

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

     return Delete(GetListSize() - 1);
    }

    DataType SeqStack::Peek(void) const   //读栈顶元素并返回
    {
     return GetData(GetListSize() - 1);
    }

    int SeqStack::StackEmpty(void) const
    {
     return ListIsEmpty();
    }

    int SeqStack::GetSize(void) const
    {
     return GetListSize();
    }

    void SeqStack::ClearStack(void)
    {
     ClearList();
    }

    3.SeqListTest.cpp完成10进制与8进制的相互转化

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

    #include "SeqStack.h"

    int main(int argc, char *argv[])
    {
     SeqStack 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.GetSize()-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.GetSize()-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;
    }

  • 相关阅读:
    centos 6.5 查看、开启,关闭 端口
    centos 安装 nginx
    centos 安装 svn
    centos 安装 maven
    (转)不停止Nginx服务的情况下平滑变更Nginx配置
    记录1---python+linux+vim之while循环语句使用
    记录1---linux系统之创建用户,用户登录,查看用户名,切换用户登录,退出登录
    记录——Fiddler5.0 中文版 绿色免费版 汉化破解版安装
    fiddler笔记1---fiddler的安装 和 证书安装 以及 证书导出失败问题解决
    fiddler笔记2--fiddler工具界面的功能使用与介绍
  • 原文地址:https://www.cnblogs.com/brucewoo/p/2252048.html
Copyright © 2011-2022 走看看