括号{}()[]匹配
来源:互联网 发布:淘宝品牌排行榜 编辑:程序博客网 时间:2024/05/17 23:17
使用栈来实现
#include<stdio.h>#include<stdlib.h>#include<string.h>#define MAX 100typedef struct elem{ int date;};typedef struct LinkStack{ elem elem_date; LinkStack *next;}LinkStack;//初始化void Init(LinkStack **top)//栈只有头,没有底{ *top = (LinkStack*)malloc(sizeof(LinkStack)); (*top)->next = NULL;}//入栈int push(LinkStack *Top, int date){ LinkStack *p = (LinkStack*)malloc(sizeof(LinkStack)); if (p == NULL) { printf("申请空间失败\n"); return -1; } p->elem_date.date = date; p->next = Top->next; Top->next = p; return 0;}//出栈int pop(LinkStack *top, int &date){ if (top->next == NULL) { date = -1; return -1; } LinkStack*p = (LinkStack*)malloc(sizeof(LinkStack)); p = top->next; date = p->elem_date.date; top->next = p->next; free(p); return 0;}//获得栈顶元素int get(LinkStack *top, int &date){ if (top->next == NULL) { date = -1; return -1; } date = top->next->elem_date.date; return 0;}//判空int empty(LinkStack *top){ if (top->next == NULL) { return 1; } return 0;}//() {} []//01 23 45bool mate(char *buf){ LinkStack *stack; Init(&stack); int buf1[MAX] = {}; int i = 0; while (i<strlen(buf)) { switch (buf[i]) { case '(':buf1[i] = 0; break; case ')':buf1[i] = 1; break; case '{':buf1[i] = 2; break; case '}':buf1[i] = 3; break; case '[':buf1[i] = 4; break; case ']':buf1[i] = 5; break; default: break; } i++; } buf1[i] = 6; i = 0; int tmp = 0; while (buf1[i] != 6) { switch (buf1[i]) { case 0:push(stack, buf1[i]); break; case 2:push(stack, buf1[i]); break; case 4:push(stack, buf1[i]); break; default: break; } switch (buf1[i]) { case 1: { pop(stack, tmp); if (tmp != 0) { return false; } } break; case 3: { pop(stack,tmp); if (tmp != 2) { return false; } break; } case 5: { pop(stack,tmp); if (tmp != 4) { return false; } break; } default:break; } i++; } if (empty(stack)) { return true; } return false;}int main(void){ char buf[MAX] = ""; gets_s(buf); if (mate(buf)) printf("括号可以匹配\n"); else printf("括号不可以匹配\n"); return 0;}
阅读全文
0 0
- 括号括号括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配/()[]
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配!!!!
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- 括号匹配
- c/c++ 语言随机数产生
- jenkins打包报:ant:command not find
- MySQL半同步复制的数据一致性探讨
- ASP.NET动态添加TextBox控件
- tomcat的安装和系统自启动
- 括号{}()[]匹配
- Server Tomcat v9.0 Server at localhost failed to start.
- 不存在具有“AppType”的“IEnumerable<SelectListItem>”类型的 ViewData 项
- Android中layer-list使用详解
- CDOJ1073-秋实大哥与线段树 线段树单点更新+区间求和
- ssh框架小结
- angular-file-upload 封装为指令获取图片高宽
- 第1条:考虑用静态工厂方法代替构造器
- C/C++中的static