<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      數據結構學習記錄連載7(堆棧提高要求)

      說明:繼續實現前面堆棧部分提高要求的功能

      1.SeqStack.h

      /*
      * Copyright (c) 2009,FreshAir團隊嵌入式軟件研發組
      * All rights reserved.
      *
      * 文件名稱:SeqStack.h
      * 摘 要: 順序堆棧類的定義
      *
      * 當前版本:1.0
      * 作 者: 吳友強
      * 完成日期:2009年10月13日
      *
      * 取代版本:
      * 原作者 :
      * 完成日期:
      */
      #include <iostream.h>
      #include <stdlib.h>

      typedef int DataType;
      const int MaxStackSize = 100;
      class SeqStack 
      {
      private:
       DataType data[MaxStackSize];
       int top;
      public:
       SeqStack();
       virtual ~SeqStack();

       void Push(const DataType &item); //入棧
       DataType Pop(void);     //出棧
       DataType Peek(void) const;  //返回棧頂元素
       int StackIsEmpty(void) const;   //堆棧是否為空
       int GetStackSize(void) const; //返回堆棧的元素個數
       void ClearStack(void);   //清空堆棧
      };

      2.SeqStack.cpp

      /*
      * Copyright (c) 2009,FreshAir團隊嵌入式軟件研發組
      * All rights reserved.
      *
      * 文件名稱:SeqStack.cpp

      * 摘 要: 順序堆棧的實現
      *
      * 當前版本:1.0
      * 作 者: 吳友強
      * 完成日期:2009年10月17日
      *
      * 取代版本:
      * 原作者 :
      * 完成日期:
      */
      #include "SeqStack.h"

      SeqStack::SeqStack()
      {
       top = 0;
      }

      SeqStack::~SeqStack()
      {
      }

      /*
      * 函數名稱: Push

      * 輸 入: item
      * item: 壓入堆棧的數據
      * 輸 出:
      * 功能描述: 將item入棧
      * 作 者: 吳友強
      * 日 期: 2009年10月17日
      * 修 改:
      * 日 期:
      */
      void SeqStack::Push(const DataType &item)
      {
       if (top == MaxStackSize)
       {
        cout << "堆棧已滿!" << endl;
        exit(0);
       }

       data[top] = item;
       top++;
      }

      DataType SeqStack::Pop(void)
      {
       if (top == 0)
       {
        cout << "堆棧以空!" << endl;
        exit(0);
       }

       top--;
       return data[top];
      }

      DataType SeqStack::Peek(void) const
      {
       if (top == 0)
       {
        cout << "堆棧空!" << endl;
        exit(0);
       }

       return data[top-1];
      }

      int SeqStack::StackIsEmpty(void) const
      {
       return top == 0 ? 1 : 0;
      }

      int SeqStack::GetStackSize(void) const
      {
       return top;
      }

      void SeqStack::ClearStack(void)
      {
       top = 0;
      }

      3.測試程序SeqStackTest.cpp(完成16進制與8進制的相互轉換)

      /*
      * Copyright (c) 2009,FreshAir團隊嵌入式軟件研發組
      * All rights reserved.
      *
      * 文件名稱:SeqStackTest.cpp
      * 摘 要: 測試順序堆棧的功能
      *
      * 當前版本:1.0
      * 作 者: 吳友強
      * 完成日期:2009年10月17日
      *
      * 取代版本:
      * 原作者 :
      * 完成日期:
      */

      #include "SeqStack.h"
      //思路:先把16進制或8進制轉化為10進制,在將10進制轉化為8進制或16進制
      //輸入要求:要求輸入的本來就是16進制或8進制,所以對應的輸入要求以0x或0開頭
      //補充:當然可以直接以10進制的形式輸入,只是算法不同而已
      int main()
      {
       SeqStack myStack;
       int jz, num, temp,result;
       result = 0;
       int i, j;
       cout << "請選擇輸入的是十六進制還是八進制(0,1):" ;
       cin >> jz;

       if (jz == 0)
       {
        cout << "請輸入需要轉換的16進制數字(以0x開頭):";
        cin >> num;
        while (num)
        {
         temp = num % 16;
         myStack.Push(temp);
         num = num / 16;
        }
        for (i=myStack.GetStackSize()-1; i>=0; i--)
        {
         temp = myStack.Pop();
         for (j=0; j<i; j++)
         {
          temp *= 16;
         }
         result += temp;
        }

        num = result;
        result = 0;
        while (num)
        {
         temp = num % 8;
         myStack.Push(temp);
         num = num / 8;
        }
        for (i=myStack.GetStackSize()-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)
       {
        cout << "請輸入需要轉換的8進制數字(以0開頭):";
        cin >> num;
        while (num)
        {
         temp = num % 8;
         myStack.Push(temp);
         num = num / 8;
        }
        myStack.Push(num);
        for (i=myStack.GetStackSize()-1; i>=0; i--)
        {
         temp = myStack.Pop();
         for (j=0; j<i; j++)
         {
          temp *= 8;
         }
         result += temp;
        }

        num = result; 
        while (num)
        {
         temp = num % 16;
         myStack.Push(temp);
         num = num / 16;
        }
        cout << "0x";
        while (!myStack.StackIsEmpty())
        {
         temp = myStack.Pop();
         switch (temp)
         {
         case 0:
         case 1:
         case 2:
         case 3:
         case 4:
         case 5:
         case 6:
         case 7:
         case 8:
         case 9:
          cout << temp;
          break;
         case 10:
          cout << "A";
          break;
         case 11:
          cout << "B";
          break;
         case 12:
          cout << "C";
          break;
         case 13:
          cout << "D";
          break;
         case 14:
          cout << "E";
          break;
         case 15:
          cout << "F";
          break;
         default:
          break;
         }
        }
        cout << endl;
       }
       else
       {
        cout << "輸入出錯,程序退出!" << endl;
        exit(0);
       }
       return 0;
      }

      posted @ 2009-10-19 19:49  薔薇理想人生  閱讀(211)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品国产乱码久久久人妻| 悠悠色成人综合在线观看| 国产高清精品在线91| 亚洲一区二区中文字幕| 亚洲精品不卡无码福利在线观看 | 亚洲人成电影网站 久久影视| 久热色精品在线观看视频| 久久国产精品不只是精品| 久国产精品韩国三级视频| 国产精品一二三区蜜臀av| 日本边添边摸边做边爱| 日本中文字幕不卡在线一区二区| 亚洲欧洲日产国码久在线| 久久一区二区中文字幕| 怀集县| 成av人片一区二区久久| 亚洲欧美综合中文| 久久不卡精品| 秋霞无码久久久精品| 影音先锋男人站| 蜜臀久久99精品久久久久久| 五月婷婷中文字幕| 国产视频最新| 国产永久免费高清在线观看| 亚洲成人av综合一区| 人人澡人人妻人人爽人人蜜桃| 人人妻人人狠人人爽天天综合网| 欧美亚洲一区二区三区在线| 国产精品女同性一区二区| 夜色福利站WWW国产在线视频| 曲松县| 亚洲午夜av一区二区| 伊人天天久大香线蕉av色| 亚洲精品中文av在线| 亚洲一区二区色情苍井空| 国产精品毛片一区视频播| 中国CHINA体内裑精亚洲日本| 亚洲综合久久精品国产高清| 日本欧美一区二区免费视频| 久久99久国产精品66| 久久婷婷成人综合色综合|