資料結構C++版-棧

來源:互聯網
上載者:User

標籤:std   匹配   bin   ase   nat   等於   alt   else   ace   

 

一、概念

 

 

二、應用執行個體

1.進位轉換

#include <stdlib.h>#include <iostream>#include <string>#include "MyStack.h"#include "Coordinate.h"using namespace std;#define  BINARY 2#define  OCTONARY 8#define  HEXADECIMAL 16void main ( ){     //MyStack<int> s(30);    MyStack<char> s(30);    char num[]="0123456789ABCDEF";    int N=1348;    int mod=0;    while (N!=0)    {        mod=N%16;        s.push(num[mod]);        N=N/16;    }    s.stackTraverse(false);        /*        int elem=0;        for (int i=s.stackLength()-1;i>=0;i--)    {        s.pop(elem);        cout<<num[elem];    }*/    /*while(!s.stackEmpty())    {        s.pop(elem);        cout<<num[elem];    }*/    system("pause");    } 

 

2.括弧匹配

MyStack<char> s(30);   //存放未匹配的括弧    MyStack<char> s1(30);  //存放棧頂括弧的另一半    char str[] = "([])[";    //存放待匹配文本目標,要求無空格 e.g.   [()()]  ([]([]))    char current=0;  //當前括弧需要匹配的另一半    for (int i=0;i<strlen(str);i++)    {        if (current!=str[i])        {            s.push(str[i]);            switch(str[i])            {            case  ‘[‘:    //case 後面資料類型是int,單個字元會轉換成其ASC碼                if (current!=0)                {                    s1.push(current);                }                current=‘]‘;                break;            case ‘(‘:                if (current!=0)                {                    s1.push(current);                }                current=‘)‘;                break;            default:                cout<<"括弧不匹配."<<endl;  //default後面語句可以注釋掉,因為current不等於str[i]時str[i]就會入棧,第一個棧不為零匹配就會失敗            }                    }         else        {            char elem;            s.pop(elem);            if(!s1.pop(current))            {                current=0;            }        }    }if (s.stackEmpty())    {        cout<<"括弧匹配"<<endl;    }     else    {        cout<<"括弧不匹配"<<endl;    }    system("pause");

 

 

 

資料結構C++版-棧

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.