数据结构-栈的应用(进制转换,括号匹配)

来源:互联网 发布:淘宝刺客电玩 switch 编辑:程序博客网 时间:2024/05/19 13:19

进制转换目标效果:


进制转换功能代码:

//数制转换程序void Conversion(){    // TODO (#1#): 这里实现数制转换程序printf("请输入十进制数:");scanf("%d",&n);while(n){Push(s,n%8);n/=8;}printf("\n该十进制对应的八进制数为:");while(!StackEmpty(s)){Pop(s,x);printf("%d",x);}printf("\n");}


括号匹配目标效果:


括号匹配功能代码:

//检验括号匹配void Match(){    // TODO (#1#): 这里实现检验括号匹配的程序printf("\n\n请输入括号表达式:");char c_array[20];int i=0;scanf("%s",c_array);int l=strlen(c_array);    //求字符数组长度while(i<l&&i>=0){switch(c_array[i]){case '{':case '[':case '(':Push(s,c_array[i]);     //左括号入栈break;case '}':Pop(s,x);if(x!='{'){printf("\n匹配失败");i=-2;}break;case ']':Pop(s,x);if(x!='['){printf("\n匹配失败");i=-2;}break;case ')':Pop(s,x);if(x!='('){printf("\n匹配失败");i=-2;}break;}i++;}if(i>0)printf("\n匹配成功");}


源码链接:点击打开链接

注意:
1.这里没有贴具体对栈操作的代码,是因为代码和上一篇博文栈操作的代码一样。
2.加一个小插曲,这里的括号匹配是英文括号匹配,中文括号会有乱码等问题,别问我怎么知道的,一脸懵逼.jpg。
3.源码中两个功能一起运行的,所以括号匹配输入字符串使用了scanf,使用gets会出现问题(上边进制转换带来的问题),但是如果单独作为一个功能时,gets也能正确运行。


阅读全文
0 0