当前位置:   article > 正文

数据结构_栈在括号匹配中的应用_代码

数据结构_栈在括号匹配中的应用_代码

学习笔记 

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4. #define MaxSize 10
  5. typedef struct{
  6. char data[MaxSize];
  7. int top;
  8. }SqStack;
  9. //初始化栈
  10. void InitStack(SqStack &S){
  11. S.top = 0;
  12. }
  13. //判断栈是否为空
  14. bool StackEmpty(SqStack S){
  15. if (S.top == 0) return true;
  16. return false;
  17. }
  18. //新元素入栈
  19. bool Push(SqStack &S,char x){
  20. if (S.top > MaxSize) return false;
  21. S.data[S.top] = x;
  22. printf("此时入栈的为: %c\n",x);
  23. S.top++;
  24. return true;
  25. }
  26. //栈顶元素出栈
  27. bool Pop(SqStack &S,char &x) {
  28. if (S.top == 0) return false;
  29. x = S.data[S.top-1];
  30. printf("此时出栈的为: %c\n",x);
  31. S.top--;
  32. return true;
  33. }
  34. bool bracketCheck(char str[],int length){
  35. SqStack S;
  36. InitStack(S);
  37. for(int i=0;i<length;i++){
  38. if(str[i] == '(' || str[i] == '[' || str[i] == '{'){
  39. Push(S,str[i]);
  40. }else{
  41. if(StackEmpty(S)) return false;
  42. char topelem;
  43. Pop(S,topelem);
  44. if(str[i] == ')' && topelem != '(')
  45. {
  46. printf("匹配失败!\n");
  47. return false;
  48. }
  49. if(str[i] == ']' && topelem != '[')
  50. {
  51. printf("匹配失败!\n");
  52. return false;
  53. }
  54. if(str[i] == '}' && topelem != '{')
  55. {
  56. printf("匹配失败!\n");
  57. return false;
  58. }
  59. printf("这一对括号为:%c %c\n",topelem,str[i]);
  60. }
  61. }
  62. return StackEmpty;
  63. }
  64. int main(){
  65. char str[] = "{[([])]}";
  66. int length = strlen(str);
  67. bracketCheck(str,length);
  68. return 0;
  69. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/621950
推荐阅读
相关标签
  

闽ICP备14008679号