1. 程式人生 > >虛擬碼:括號匹配

虛擬碼:括號匹配

Status BracketMatchStack(char str[],SElemType e)
{//str[]為用char型陣列儲存的需檢查字串,匹配檢測通過則e為0,若匹配檢測未通過則e為出錯位置
    InitStack(&S);//構造一個空棧S
    i = 0;
    while(str[i] != NULL)
    {  //若str[i]為括號則執行對應操作,str[i]為其他字元時直接跳過
        if(str[i]=='{'||str[i]=='['||str[i]=='(')//左括號直接入棧
        {
            if(str[i]=='{')  
               mark='}'; 
            if(str[i]=='[')  
               mark=']';
            if(str[i]=='(')  
               mark=')';


            Push(&S,mark);
        }
        if(str[i]=='}'||str[i]==']'||str[i]==')')//右括號與棧頂元素進行匹配檢測
        {
            GetTop(&S,mark);
            if(str[i]==mark)
            {
               Pop(&S,x);//若匹配則將此棧頂元素消除
            }
            else
            {
               e=i;
               return ERROR;
            }
        }
        i++;     
    }
    e=0;
    return OK;
}