栈——数据结构
来源:互联网 发布:java优先级队列 编辑:程序博客网 时间:2024/05/21 10:25
顺序栈,链栈及其应用——括号匹配算法
#include<stdio.h>#include<stdlib.h>#define maxn 100typedef struct //顺序栈;{ char elem[maxn]; int top;}SeqStack;void InitStack(SeqStack *S){ S->top=-1;}void Push(SeqStack *S,char x){ if(S->top==maxn-1) return; S->top++; S->elem[S->top]=x;}void Pop(SeqStack *S,char *x){ if(S->top==-1) return; else{ *x=S->elem[S->top--]; }}void GetTop(SeqStack *S,char *x){ if(S->top==-1) return; else{ *x=S->elem[S->top]; }}typedef struct node //链栈;{ char data; struct node *next;}LinkStackNode,*LinkStack;void InitLink(LinkStack L){ L=(LinkStackNode*)malloc(sizeof(LinkStackNode)); L->next=NULL;}void push(LinkStack top,char x){ LinkStackNode *temp; temp=(LinkStackNode*)malloc(sizeof(LinkStackNode)); if(temp==NULL) return; temp->data=x; temp->next=top->next; top->next=temp;}void pop(LinkStack top,char *x){ LinkStackNode *temp; temp=top->next; if(temp==NULL) return; top->next=temp->next; *x=temp->data; free(temp);}bool Match(char x,char y){ if((x=='('&&y==')')||(x=='['&&y==']')||(x=='{'&&y=='}')) return true; else return false;}void BrachetMach(char *str) //括号匹配算法;{ SeqStack S; int i; char ch; InitStack(&S); for(int i=0;str[i]!='\0';i++){ switch(str[i]){ case'(': case'[': case'{': Push(&S,str[i]); break; case')': case']': case'}': if(S.top==-1){ printf("\n右括号多余!"); return; } else{ GetTop(&S,&ch); if(Match(ch,str[i])) Pop(&S,&ch); else{ printf("\n对应左右括号不匹配!"); return; } } } } if(S.top==-1) printf("\n括号匹配"); else printf("\n左括号多余!");}int main(){ SeqStack s; LinkStackNode l; char c; char str[100]; InitStack(&s); InitLink(&l); c='a'; for(int i=0;i<10;i++){ Push(&s,c); c++; } for(int i=0;i<10;i++){ Pop(&s,&c); printf("%c ",c); } printf("\n"); c='A'; for(int i=0;i<10;i++){ push(&l,c); c++; } for(int i=0;i<10;i++){ pop(&l,&c); printf("%c ",c); } printf("\n"); scanf("%s",str); BrachetMach(str); return 0;}
阅读全文
0 0
- 数据结构——基本数据结构之栈
- 数据结构——基本数据结构之栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 数据结构——栈
- 采用代码注册广播接收者
- hdoj1025 Constructing Roads In JGShining's Kingdom (最长递增子序列 , map)
- Python基础-获取类属性
- 类型提升问题
- OpenGL材质的设置
- 栈——数据结构
- C++版ThreadPool实现
- HDU 2178 猜数字(二分思想)
- Web 研发模式的演变
- map函数的使用技巧
- php后台
- Nginx配置https协议
- 百度地图开发——Android客户端开发缺少mips的cpu架构
- 大数据hadoop学习