堆栈
2016-05-01 11:17
288 查看
堆栈 #include<iostream> using namespace std; #define intial 100 typedef char elemtype; typedef struct{ int top; elemtype *data; int stacksize; }stack; stack s; void intistack(stack *s) //创建一个空栈s { s->data=(elemtype *)malloc(intial*sizeof(elemtype)); s->top=0; s->stacksize=intial; } int getlen(stack *s)//得到栈的长度 { return s->top; } int gettop(stack *s)//得到栈顶元素 { if(s->top==0) return 0; return s->data[s->top-1]; } void push(stack *s,elemtype x)//push { if(s->top==s->stacksize) { s->data=(elemtype *)realloc(s->data,(s->stacksize+1)*sizeof(elemtype)); if(!s->data) return ; s->stacksize++; } s->data[s->top++]=x; } int pop(stack *s)//pop { if(s->top==0) return 0; return s->data[--s->top]; } int is_empty(stack *s)//判断栈是否为空 { if(s->top==0) return 1; return 0; } void print(stack *s)//打印栈 { int ss=s->top; for(int i=ss-1;i>=0;i--) { cout<<s->data[i]<<" "; } cout<<endl; } void conversion(int m,int n,stack *s)//输入一个数把它转化为任意2-9进制 { while(m) { push(s,m%n); m=m/n; } } int match(char *exps) { int ok=1; elemtype ch; int i=0; intistack(&s); while(ok&&exps[i]!='\0') { switch(exps[i]) { case '(': case '[': case '{':push(&s,exps[i]);break; case ')':ch=gettop(&s); pop(&s); if(ch!='(') ok=0; break; case ']':ch=gettop(&s); pop(&s); if(ch!='[') ok=0; break; case '}':ch=gettop(&s); pop(&s); if(ch!='{') ok=0; break; } i++; if(!ok) break; } if(ok) return 1; return 0; } int main() { //转化进制 // int m,n; // intistack(&s);//初始化堆栈 注意 // cin>>m>>n; // conversion(m,n,&s); // print(&s); //判断括号 // char exps[100]; // int n; // cin>>n; // for(int i=0;i<n;i++) // cin>>exps[i]; // if(match(exps)) cout<<"Yes"<<endl; // else cout<<"No"<<endl; return 0; }
相关文章推荐
- HDU 1242 Rescue(图)
- linux shell 常用基本语法
- 【HUSTOJ】1004: 求商与余数
- 链栈
- MySql: AUTO_INCREMENT
- 20145233韩昊辰 第四次实验报告
- sql server中的 SET NOCOUNT ON 的含义
- JAVA设计模式之单例模式
- 非二叉树转二叉树的表示法
- java之StringBuffer的一些用法
- Problem O
- HDU 5756 ztr loves lucky numbers dfs
- Android学习系列一用按钮实现显示时间
- android多进程实验
- leetcode-107. Binary Tree Level Order Traversal II
- 计算机基础-Socket详解
- 如何上传应用到 Google Play
- 剑指offer(62):之字形打印二叉树
- Swift3.0为视图添加旋转动画_CABasicAnimation
- 类的内存空间大小