数据结构——栈实现括号匹配
来源:互联网 发布:淘宝电脑认证入口 编辑:程序博客网 时间:2024/05/17 08:40
数据结构——栈实现括号匹配
真正学习之后,才发现那些所谓的大婶不过是多用功了些。不知道以前为什么不亲自动手做做,原来这么简单。#include <stdio.h>#include <stdlib.h>#include <malloc.h>#include <string.h>/**栈的链式存储**/typedef struct Data{char c;};typedef struct Stack{Data data;Stack *top;//指向栈顶元素};/**初始化空栈**/void InitStack(Stack *S){S->top = NULL;}/**判断是否为空栈**/int StackEmpty(Stack S){//为空返回1否则返回0if(S.top==NULL) return 1;else return 0;}/**返回栈顶元素**/void GetTop(Stack S,Data *d){if(StackEmpty(S)==1)printf("It's an empty stack!");else{d->c = S.top->data.c;}}/**向栈顶插入新元素 入栈**/void PushStack(Stack *S,Data d){Stack* p = (Stack *)malloc(sizeof(Stack));p->data.c = d.c;p->top = S->top;S->top = p;}/**从栈顶删除元素 出栈**/void PopStack(Stack *S,Data *d){if(StackEmpty(*S)==1){printf("It's an empty stack!\n");}else{Stack *p = S->top;S->top = p->top;d->c = p->data.c;}}/**清空栈**/void ClearStack(Stack *S){if(StackEmpty(*S)==1){printf("It's already an empty stack!\n");}else{S->top = NULL;}}/**打印栈内信息**/void PrintStack(Stack S){if(StackEmpty(S)==1){printf("It's an empty stack!\n");}else{printf("name----age\n");while(S.top!=NULL){printf("%s\n",S.top->data.c);S.top = S.top->top;}}}/**检查右括号与栈顶元素是否匹配**/int Match(Data r,Data s){//匹配成功返回1if(r.c==')'&&s.c=='('){return 1;}else if(r.c=='}'&&s.c=='{'){return 1;}else if(r.c==']'&&s.c=='['){return 1;}else{return 0;}}/**括号匹配**/void CheckMatch(char *m,Stack *S){Data r,s;while(*m){switch (*m){case '(':case '{':case '[':s.c = *m;PushStack(S,s);*m++;break;case ')':case '}':case ']':if(StackEmpty(*S)){printf("Location %s can't match!\n",*m);return;}GetTop(*S,&s);r.c = *m;if(Match(r,s)){PopStack(S,&s);*m++;}else{printf("Location %c can't match!\n",*m);return;}default:*m++;}}if(StackEmpty(*S)){printf("Match successfully!\n");}else{printf("Can't match!Lack of right bracket!\n");}}void main(){char d[12];Stack S;char *p;printf("Input your expression:");gets(d);p = d;//指向表达式InitStack(&S);CheckMatch(p,&S);system("pause");}
2 0
- 数据结构——栈实现括号匹配
- 数据结构(二)——栈及实现、括号匹配
- 【数据结构——栈】括号匹配
- 数据结构——括号匹配
- 数据结构-----栈实现括号匹配问题
- 数据结构作业 栈 实现 括号匹配 问题
- 数据结构-栈-括号匹配
- 第六周数据结构实践——括号的匹配(栈)【项目3-括号的匹配】
- 数据结构的应用——使用栈实现字符串括号匹配检查
- 数据结构(1)——顺序栈的实现,以及括号匹配的应用
- 数据结构学习日记(2)——用栈实现括号匹配
- 数据结构——栈——括号匹配(c++)
- 数据结构实践——括号的匹配(栈)
- 【数据结构】栈的应用——检测括号是否匹配
- 数据结构实践——括号的匹配
- 数据结构练习2——括号匹配
- 数据结构之单链表——括号匹配
- 数据结构之---C语言实现括号匹配(栈实现)
- 倒数求和
- C语言之动态数组
- MyBatis-入门、动态代理、配置
- iOS 转场动画UIViewControllerTransitioningDelegate代理
- 阶乘
- 数据结构——栈实现括号匹配
- JavaSE_split 调用特殊的分隔符
- oracle创建数据库
- 《Going Deeper With Convolution》全文译解
- Appium中的activity无法启动问题
- Date类型时间加一天
- 营销通外推软件
- 变量命名
- IMWeb训练营——select组件