数据结构(C语言)---括号匹配
来源:互联网 发布:等基础设施网络建设 编辑:程序博客网 时间:2024/05/22 10:44
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10 //分配不同空间只需要更改此处的值,不需动程序里面的值。
#define OK 1
#define ERROR 0
typedef int Status;
typedef struct{
char *base;
char *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &s){ //初始化栈
s.base=(char *)malloc(STACK_INIT_SIZE * sizeof(char);
if(!s.base) exit(ERROR); //检验是否成功分配空间
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
Status check(SqStack s){
printf("请输入检验数据(括号):\n");
char c;
c=getchar();
getchar();
switch(c){
case '(' : push(s,c); break;
case '[' : push(s,c); break;
case '{' : push(s,c); break;
case ')' : pop(s,c); if(c == '(') return OK; else return OK; break;
case ']' : pop(s,c); if(c == '[') return OK; else return OK; break;
case '}' : pop(s,c); if(c == '{') return OK; else return OK; break;
default : break;
}//switch
}
Status push(SqStack &s,char e){ //压入栈顶元素
if(s.top-s.base==s.stacksize){
s.base=(char *)realloc(s.base,(STACKINCREMENT+STACK_INIT_SIZE)*sizeof(char));
if(!s.base) exit(0);
s.top=s.base+STACK_INIT_SIZE;
s.stacksize += STACKINCREMENT;
}//if
s.top ++;
e=*s.top;
return OK;
}
Status pop(SqStack &s){ //取出栈顶元素
if(s.top==s.base) return ERROR; //栈S为空
s.top --;
}
int main(int argc, char *argv[]){
SqStack s; //定义栈s
InitStack(s);
check(s);
system("PAUSE");
return 0;
}
#include <stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10 //分配不同空间只需要更改此处的值,不需动程序里面的值。
#define OK 1
#define ERROR 0
typedef int Status;
typedef struct{
char *base;
char *top;
int stacksize;
}SqStack;
Status InitStack(SqStack &s){ //初始化栈
s.base=(char *)malloc(STACK_INIT_SIZE * sizeof(char);
if(!s.base) exit(ERROR); //检验是否成功分配空间
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
return OK;
}
Status check(SqStack s){
printf("请输入检验数据(括号):\n");
char c;
c=getchar();
getchar();
switch(c){
case '(' : push(s,c); break;
case '[' : push(s,c); break;
case '{' : push(s,c); break;
case ')' : pop(s,c); if(c == '(') return OK; else return OK; break;
case ']' : pop(s,c); if(c == '[') return OK; else return OK; break;
case '}' : pop(s,c); if(c == '{') return OK; else return OK; break;
default : break;
}//switch
}
Status push(SqStack &s,char e){ //压入栈顶元素
if(s.top-s.base==s.stacksize){
s.base=(char *)realloc(s.base,(STACKINCREMENT+STACK_INIT_SIZE)*sizeof(char));
if(!s.base) exit(0);
s.top=s.base+STACK_INIT_SIZE;
s.stacksize += STACKINCREMENT;
}//if
s.top ++;
e=*s.top;
return OK;
}
Status pop(SqStack &s){ //取出栈顶元素
if(s.top==s.base) return ERROR; //栈S为空
s.top --;
}
int main(int argc, char *argv[]){
SqStack s; //定义栈s
InitStack(s);
check(s);
system("PAUSE");
return 0;
}
阅读全文
0 0
- 数据结构(C语言)---括号匹配
- 括号的匹配(c语言数据结构)
- 数据结构---C语言数据结构3.2.2括号匹配
- 数据结构之---C语言实现括号匹配(栈实现)
- C语言数据结构-桟——括号的匹配检验
- 数据结构 括号匹配问题 (栈 C语言)
- c语言括号匹配算法
- C语言 括号匹配问题
- C语言之括号匹配
- 数据结构(C语言)读书笔记6:栈的应用之括号匹配的C代码实现
- c++,数据结构之括号匹配问题
- 数据结构C语言版之括号匹配
- 数据结构-C语言括号匹配问题(栈和计数方式两种思想)
- 数据结构-C语言 栈的简单应用——括号匹配
- 纯C语言:括号匹配源码
- C语言括号匹配【堆栈原理】
- 【c语言】检查大括号匹配
- 【C语言】判断花括号{}是否匹配
- openstack【Kilo】入门 【网络篇】十五:Neutron安装配置【计算节点】
- 二分法查找顺序数组
- apache服务的管理
- 【备忘】深入JVM内核—原理、诊断与优化视频教程
- 09-常用对象API(StringBuffer类-特点&添加功能)1 2 3 4 5
- 数据结构(C语言)---括号匹配
- 递归的小题目
- HDU
- 【Mybatis】常见的crud操作
- YII2.0生成RBAC权限表
- 节奏与节拍的区别?
- Mac之MySQL初始数据库密码问题
- bzoj1834: [ZJOI2010]network 网络扩容(最小费用最大流)
- 10-常用对象API(StringBuffer类-插入&删除&查找&修改)1 2 12-常用对象API(StringBuilder类) 1 2 13-常用对象API(StringBuilde