判断出栈顺序
2015-12-10 17:28
246 查看
#include <stdio.h> #include <stdlib.h> #include <malloc.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef int status; typedef char elemtype; elemtype str[100]; typedef struct node{ elemtype *base; elemtype *top; int size; }sqstack; status initstack(sqstack &s){//初始化栈 s.base=(elemtype *)malloc(LIST_INIT_SIZE*sizeof(elemtype)); if(!s.base) exit(OVERFLOW); s.top=s.base; s.size=LIST_INIT_SIZE; return OK; } status get_top(sqstack s,elemtype &e){//获得栈顶元素 if(s.top==s.base) return ERROR; e=*(s.top-1); return OK; } status push(sqstack &s,elemtype e){//向栈中输入元素 if(s.top-s.base>=s.size){ s.base=(elemtype *)realloc(s.base,(LIST_INIT_SIZE+LISTINCREMENT)*sizeof(elemtype)); if(!s.base) exit(OVERFLOW); s.top=s.base+s.size; s.size+=LISTINCREMENT; } *s.top++=e; return OK; } status pop(sqstack &s,elemtype &e){//删除栈顶元素 if(s.top==s.base) return ERROR; e=*--s.top; return OK; } status empty(sqstack &s){//判断栈是否为空 if(s.base==s.top) return TRUE; else return FALSE; } status clearstack(sqstack &s){//将栈清空 elemtype c; while(empty(s)){ pop(s,c); } } int getlenght(char str1[]){ int cnt=0; for(int i=0;str1[i];i++){ cnt++; } return cnt; } int a[150]; int main(){ int n; while(scanf("%d",&n)!=EOF){ for(int i=1;i<=n;i++) scanf("%d",&a[i]); sqstack s; initstack(s); int cur=1; elemtype e; for(int i=1;i<=n;i++){ push(s,i); while(!empty(s)){ get_top(s,e); if(e==a[cur]){ pop(s,e); cur++; } else break; } } if(!empty(s)||cur!=n+1) printf("No\n"); else printf("Yes\n"); } return 0; }
相关文章推荐
- GSM模块短信发送举例
- ubuntu 安装软件
- 最长上升子序列 nlogn时间复杂度 poj 2533
- 平台主数据库支持类型及配置说明
- unicode
- Android 设置EditText光标颜色及粗细
- SAS简单绘图
- SoapUI + Groovy 接口自动化
- C++设计模式新解一 代理模式 (PS设计模式的必要性)
- python+stomp+activemq
- MySQL数据类型
- win10关于仅仅只能创建文件夹的问题
- 老李分享:测试工程师的命运
- 技术类博客网站推荐
- Solr之——Solr4.4主从模式配置
- KVM下windows虚拟机使用virtio驱动
- 20151210001 DataGridView 选中与被选中
- 老李案例分享:Weblogic性能优化案例
- Eclipse svn提交代码的一般步骤(对比、解决冲突、更新、提交)
- JAVA配置文件之applicationContext.xml