算法学习 - 括号匹配(栈实现)C++
来源:互联网 发布:中国移动网络维护 编辑:程序博客网 时间:2024/06/14 22:50
括号匹配是栈最典型的应用了。
其实思路很简单,就是遇到一个左括号就压栈,遇到一个右括号就弹栈,看是否匹配就好了。最后检查下栈里是不是有剩余的括号就行了。
上代码~:
//// main.cpp// bracketMatch//// Created by Alps on 14-7-28.// Copyright (c) 2014年 chen. All rights reserved.//#include <iostream>#define ElementType charusing namespace std;struct Node;typedef Node * PtrToNode;typedef PtrToNode Stack;struct Node{ ElementType X; PtrToNode Next;};int isEmpty(Stack S){ return S->Next == NULL;}Stack createStack(void){ Stack S; S = (Stack)malloc(sizeof(Node)); S->Next = NULL; return S;}void Push(Stack S, ElementType X){ Stack element; element = (Stack)malloc(sizeof(Node)); element->X = X; element->Next = S->Next; S->Next = element;}void Pop(Stack S){ if (!isEmpty(S)) { Stack tmp = S->Next; S->Next = tmp->Next; free(tmp); }else{ printf("Empty stack can't pop cell\n"); }}ElementType Top(Stack S){ ElementType X; if (!isEmpty(S)) { return X = S->Next->X; }else{ printf("empty stack, no top cell\n"); } return 0;}void makeEmpty(Stack S){ if (S == NULL) { printf("create stack first\n"); } while (!isEmpty(S)) { Pop(S); }}int main(int argc, const char * argv[]){ Stack S = createStack(); int i = 0; char tmp; int flag = 0; char A[] = {'(','b','c',')','[','{','a','(',')','c','}',']'}; for (i = 0; i < sizeof(A)/sizeof(char); i++) { if (A[i] == '(' || A[i] == '[' || A[i] == '{') { Push(S, A[i]); continue; }else{ if (A[i] == ')' || A[i] == ']' || A[i] == '}') { tmp = Top(S); switch (A[i]) { case ')': if (tmp == '(') { flag = 1; } break; case ']': if (tmp == '[') { flag = 1; } break; case '}': if (tmp == '{') { flag = 1; } break; default: break; } if (flag != 1) { printf("the bracket doesn't match! %c-%d\n",A[i],i); return 1; }else{ Pop(S); flag = 0; } }else{ continue; } } } if (!isEmpty(S)) { printf("there are already some barackets not matched!\n"); return 1; }else{ printf("the bracket is matched\n"); } return 0;}
其实主要流程都在main函数里,我没有变成函数。。。多包涵好了。
0 0
- 算法学习 - 括号匹配(栈实现)C++
- C实例---括号匹配(栈实现)
- C/C++数据结构通过顺序栈实现括号()匹配算法
- 数据结构之---C语言实现括号匹配(栈实现)
- 利用栈实现括号匹配算法!
- 利用栈实现括号匹配算法
- 利用栈实现括号匹配算法!
- 使用栈实现括号匹配算法-java
- 利用STL栈实现括号匹配算法
- 括号匹配算法的栈实现
- 用栈实现括号匹配的算法
- 括号匹配(栈实现)
- c语言栈实现括号匹配
- c语言括号匹配算法
- 栈的学习: 实现括号匹配功能
- 算法学习-最长括号匹配
- 指针实现的栈(包含进制转换算法实现,括号匹配算法实现)【8】
- 栈实现括号匹配
- ios 三种基本动画
- Percona Xtrabackup
- poj 3321 Apple Tree 树状数组
- 怎样快速在线将pdf转换成word
- JDeveloper different library list deteected
- 算法学习 - 括号匹配(栈实现)C++
- 四:Smack文档的下载和初步了解
- android学习之路
- 中国的车祸为什么多?一个”海归”的亲身体验
- Iphone开发 获取视频缩略图和时长
- IIS PHP环境 $_SERVER['DOCUMENT_ROOT'] 获取不到值
- Maven安装配置参考
- js闭包(转载)
- IOS 30多个iOS常用动画,带详细注释