括号匹配问题是一种典型的栈思想的应用。利用栈先进后出原则,使得最里面的括号最先匹配,一次出栈匹配到最外面。代码如下:

#include <iostream>#include <stdio.h>#define MaxSize 10/* run this program using the console pauser or add your own getch, system("pause") or input loop *//**栈的应用,括号的匹配问题。 *///定义一个静态方式的栈 typedef struct{    char data[MaxSize];//静态数组存放栈元素     int top;//栈顶指针 }Stack; //初始化栈 void InitStack(Stack &S){    S.top = -1;}//判断栈是否空bool isEmpty(Stack &S){    if(S.top==-1){        return true;    }else{        return false;    }} //入栈bool PushStack(Stack &S,char x){    if(S.top==MaxSize-1){//栈满报错         return false;    }//top指针先指向最新的栈顶元素     S.data[++S.top] = x;//将值赋给栈顶元素     return true;} //出栈(x返回)bool PopStack(Stack &S,char &x){    if(S.top = -1){//栈空报错         return false;    }    x = S.data[--S.top];    return true;}  //括号匹配bool StackMatch(char str[],int length){    Stack S;//声明栈    InitStack(S);//初始化栈    for(int i=0;i<length;i++){        if(str[i]=='(' || str[i]=='[' || str[i]=='{'){            PushStack(S,str[i]);//扫描到左括号入栈         }else{            if(isEmpty(S)){                return false;            }            char topElem;            PopStack(S,topElem);//栈顶元素出栈             if(str[i]=='(' && topElem!=')'){                return false;            }            if(str[i]=='[' && topElem!=']'){                return false;            }            if(str[i]=='{' && topElem!='}'){                return false;            }        }       }    return isEmpty(S);//栈空说明匹配成功 } int main(int argc, char** argv) {    char str[] = {'('};    char str1[] = {'(',')'};    char str2[] = {'(','(','(',')',')'};    char str3[] = {'(','(',')',')',')'};    char str4[] = {')'};    /*    printf("您要匹配的括号元素是:");    for(int i=0;i<5;i++){        printf("%c",str2[i]);    }    */    bool flag = StackMatch(str2,5);     printf("\nflag=%d",flag);    return 0;}

更多相关文章

  1. Jquery对选取到的元素显示指定的长度,对于的字符串用“...”显示
  2. jQuery编程基础精华02(属性、表单过滤器,元素的each,表单选择器,子元
  3. scrollTop到溢出滚动div中的活动元素
  4. jQuery使用之(四)处理页面的表单元素
  5. jQuery遍历祖先元素:parentsUntil
  6. jQuery入门(2) 获取元素和DOM转换
  7. 用Jquery控制元素的上下移动 实现排序功能
  8. jQuery -添加活动类并在单击时从其他元素中删除活动类
  9. 仅当鼠标停留在元素上时,jQuery才会激活鼠标悬停函数

随机推荐

  1. Android必备:Android Socket编程的了解与
  2. android jqMobi 1.0 发布
  3. Android深入理解android:layout_gravity
  4. 对Task和Activity在ANDROID中的解释
  5. 四十五、android camera
  6. Android WebView与 JS 的交互方式
  7. 百度android定位SDK问题
  8. Android-开发搭建
  9. android之常用知识点(一)
  10. android中线程进程模型