三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 334|回复: 0
打印 上一主题 下一主题

C语言数据结构-algo3-3.c

[复制链接]

1562

主题

1564

帖子

4904

积分

博士

Rank: 8Rank: 8

积分
4904
跳转到指定楼层
楼主
发表于 2017-9-1 08:21:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. /* algo3-3.c 括号匹配的检验,(限于()、[]) */
  2. typedef char SElemType;
  3. #include"c1.h"
  4. #include"c3-1.h"
  5. #include"bo3-1.c"

  6. void check()
  7. { /* 对于输入的任意一个字符串,检验括号是否配对 */
  8.    SqStack s;
  9.    SElemType ch[80],*p,e;
  10.    if(InitStack(&s)) /* 初始化栈成功 */
  11.    {
  12.      printf("请输入表达式\n");
  13.      gets(ch);
  14.      p=ch;
  15.      while(*p) /* 没到串尾 */
  16.        switch(*p)
  17.        {
  18.          case '(':
  19.          case '[':Push(&s,*p++);
  20.                   break; /* 左括号入栈,且p++ */
  21.          case ')':
  22.          case ']':if(!StackEmpty(s)) /* 栈不空 */
  23.                   {
  24.                     Pop(&s,&e); /* 弹出栈顶元素 */
  25.                     if(*p==')'&&e!='('||*p==']'&&e!='[') /* 弹出的栈顶元素与*p不配对 */
  26.                     {
  27.                       printf("左右括号不配对\n");
  28.                       exit(ERROR);
  29.                     }
  30.                     else
  31.                     {
  32.                       p++;
  33.                       break; /* 跳出switch语句 */
  34.                     }
  35.                   }
  36.                   else /* 栈空 */
  37.                   {
  38.                     printf("缺乏左括号\n");
  39.                     exit(ERROR);
  40.                   }
  41.          default: p++; /* 其它字符不处理,指针向后移 */
  42.        }
  43.        if(StackEmpty(s)) /* 字符串结束时栈空 */
  44.          printf("括号匹配\n");
  45.        else
  46.          printf("缺乏右括号\n");
  47.    }
  48. }

  49. void main()
  50. {
  51.    check();
  52. }
复制代码


回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2025-5-2 00:07 , Processed in 0.027801 second(s), 23 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表