用栈判断表达式中的括号是否匹配(c语言)

//判断一个算术表达式的圆括号是否正确配对
#include
#define MAXSIZE 1000
typedef char datatype;
typedef struct Stack{
datatype elements[MAXSIZE];
int Top;
}stacky;
stacky *SetnullS(stacky *S){
S->Top=-1;
return S;
}
int Empty(stacky *S){
if(S->Top==0)
return 1;
else return 0;
}
stacky *push(stacky *S,datatype e){
if(S->Top>=MAXSIZE-1){
printf ("overflow");
return NULL;
}

else {
S->Top++;
S->elements[S->Top]=e;
}
return S;

}
stacky*pop(stacky *S){
S->Top--;
return S;

}
int Scan(stacky *S,char a[]){
int i;
for(i=0;i if(a[i]=='(')
push(S,a[i]);
else if(a[i]==')'){
pop(S);
}
}
if(S->Top==0) return 1;
else return 0;
}
void main(){
int key;
char a[100]={'(',')','(',')'};
stacky *S;
SetnullS(S);
//gets(a);
key=Scan(S,a);
if(key==1) printf("match");
else printf("unmatch");

}

请问这个程序哪里出错了呢··运行不了

c
0

1个回答

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
判断表达式括号是否匹配,C语言堆栈实现
#include #include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT  10 typedef struct Sq{ char *base; char *top; int stacksize; }SqStack; void InitStack(SqStack *s) { s->base
C语言中利用栈检测括号是否匹配
检测括号是否匹配的算法中,栈的特性是最符合括号特点的。栈的先进后出将括号的匹配正好完美实现。 思想: 从字符串开头向后逐个检测,检测到除括号外的元素就跳过。检测到左括号时,就进行入栈操作,继续向后检测。检测到有括号时,就检查栈顶元素是否是匹配的左括号。若不匹配,则直接返回错误信号,使程序结束;若匹配,进行出栈操作,继续向后检测。结束时,要判断栈是否为空,若不为空,则括号不匹配;若为空,则括号匹
用顺序栈判断表达式中括号是否匹配正确
《数据结构,算法及应用》 zhangxianchao P80 13题
C语言利用栈的操作实现判断字符串中的括号是否匹配(只考虑半角括号:( ) { } [ ])
C语言利用栈的操作实现判断字符串中的括号是否匹配(只考虑半角括号:( ) { } [ ]) 题目均在sdibt acm oj上AC,参考《深入浅出数据结构和算法》教材,逐个复制即可运行,欢迎评论指正!   Description  输入一串字符串,编写算法判断字符串中的括号是否匹配,如果匹配,输出1,否则输出0。 注: 只考虑半角括号:( ) { } [ ],不考虑全角括号:( ) 【 ...
利用栈判断输入的表达式中括号是否配对
解题思路:        在表达式括号配对时返回true,否则返回false。设置一个链栈st,扫描表达式exp,遇到左括号时进栈,遇到右括号时若栈顶为左括号,则出栈,否则返回false。当表达式扫描完毕,栈为空时返回true,否则返回false。算法如下: #include<stdio.h> #include<iostream> #include<string...
顺序栈判断表达式中括号的匹配
算法思路: 建立一个栈,顺序对表达式进行扫描,如遇到‘(’,‘【’,‘{’,左半边括号将其入栈,遇到右半边括号,检查当前栈顶元素是否对应,对应就出栈,不对应则不匹配。 Ps:主要注意出栈与入栈对栈顶的操作的先后顺序。#include using namespace std; typedef struct{ char data[1000]; int top; }stack; v
“顺序栈”判断表达式中的括号是否正确配对
问题及代码: /* * Copyright (c) 2016, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:date.cpp * 作 者:单昕昕 * 完成日期:2016年3月31日 * 版 本 号:v1.0 * 问题描述:假设表达式中允许包含3中括号:圆括号、中括号和大括号。 设计一个算法采用“顺序栈”判断表达式中的括号
检查一个算术表达式中的括号是否正确匹配。
设计算法: 检查存储在单链表中的算术表达式 s 所包含的括号—— “(” 与 “)” 、 “[” 与 “]” 、 “{” 与 “}”是否正确匹配; 1、 创建单链表 s,通过用户逐个字符输入,完成 s 的初始化。 2、 编写程序实现函数 Check,并输出检查结果。 3、 为增强程序的可读性,对程序中较难理解的语句要有准确、清晰的注释。 由教师随机给出测试数据,程序能够反馈括号是否匹配,如果不匹配,指出第一个不匹配所在位置
栈的基本操作及如何判断一个表达式中的左右括号是否匹配
我们都知道,栈(stack)具有后进先出的特点,所以在我们思考一个表达式中的左右括号是否匹配问题时,就自然会想到是不是可以利用栈的特点来判断左右括号是否匹配呢? 主要思路如下: 1.扫描整个表达式; 2.判断当前字符是否为括号(左右括号) ①如果不是,则继续扫描下一个字符; ②如果是,则判断当前操作符是否为左括号 若为左括号—>直接入栈。
判断括号是否匹配——堆栈
Algorithm 1.有效的括号 给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: fa...
用栈判断表达式中的括号是否匹配
栈的简单应用。
c语言栈实现括号匹配
在文字处理软件或编译程序设计时,常常需要检查一个字符串或一个表达式中的括号是否相匹配? 匹配思想:从左至右扫描一个字符串(或表达式),则每个右括号将与最近遇到的那个左括号相匹配。则可以在从左至右扫描过程中把所遇到的左括号存放到堆栈中。每当遇到一个右括号时,就将它与栈顶的左括号(如果存在)相匹配,同时从栈顶删除该左括号。 算法思想:设置一个栈,当读到左括号时,左括号进栈。当读到右括号时,则从栈中弹
C语言实现顺序栈的括号匹配
//顺序栈的使用举例:括号的匹配 #include #include #define OK      1 #define ERROR   0 #define TRUE    1 #define FALSE   0 #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define BUFFERSIZE 256
用栈来判断括号字符串是否匹配
#include #include using namespace std; #define stacksize 100 struct stack { char strstack[stacksize]; int top; }; void InitStack(stack &s) { s.top = -1; } char Push(stack &s, char a)//入栈 { i
数据结构-C语言括号匹配问题(栈和计数方式两种思想)
题目描述现在,有一行括号序列,里面只包含”(“,”)”,”[“,”]”四种符号,请你检查这行括号是否配对。 如: []是匹配的 ([])[]是匹配的 ((]是不匹配的 ([)]是不匹配的 求解思想这里提供了两种求解方法:一种是使用栈进行求解;另一种是使用计数器进行求解。下面分别对两种方法进行描述以及给出相应代码。栈定义一个计数器用来判断正反括号的数量,遇见 { 则count+1
C语言数据结构之利用栈进行括号匹配的检验
括号匹配的检验:    eg: [([][][)]]    不匹配        [([][])] 匹配思路:   0x0.首先建立两个栈,并对其初始化      0x1.对表达式进行遍历,将相邻两个不能匹配的入栈到栈A,然后检测栈空间A是否为偶数,如果是表明有存在的可能,如果不是则提示不匹配。0x2.检测栈空间A是否为偶数,如果是表明有存在的可能,如果不是则提示不匹配,遍历栈A,将不匹配的入栈...
“链栈”判断表达式中的括号是否正确配对
问题及代码: /* * Copyright (c) 2016, 烟台大学计算机与控制工程学院 * All rights reserved. * 文件名称:date.cpp * 作 者:单昕昕 * 完成日期:2016年3月3
算法设计-利用栈判别表达式中的括弧是否配对
假设一个算术表达式中包括()、[]、{}三种类型的括弧,编写一个判别表达式中括弧是否正确配对的函数correct(exp,tag);其中:exp为字符串类型的变量(可理解为每个字符占用一个数组元素),表示被判别的表示式。         tag为布尔型变量。思路:用栈st进行判定,遇到(、[、{时入栈,当遇到)、]、}时,检查当前栈顶元素是否是对应的(、[、{,若是则退栈,否则返回表示不配对。当整...
用链栈实现字符串表达式括号匹配算法
用栈、字符串、if语句实现括号的匹配算法
C语言-括号匹配的检验
使用下面代码前,需要引入基本算法。另外数据结构的基本算法已经更新,新增了“队列”的基本算法。 基本算法地址:https://www.orbpi.cn/article/shujujiegoujibensuanfaluru.html 问题描述 假设表达式中允许有两种括号:圆括号和方括号,其嵌套的顺序随意,即(()[ ])或[([ ] [ ])]等为正确格式,[( ])或(((]均为不正确的格式。检验括...
【算法】使用栈检查表达式的括号匹配
使用栈检查表达式的括号匹配 给定一个表达式字符串exp,编写一个程序来检查对和“{”,“}”,“(”,“)”,“[”,“]”的顺序是否在exp中是正确的。 例如,程序应该为exp =“[()] {} {[()()]()}”打印为true,对于exp =“[(])”则为false。 算法步骤 其实这种字符串有一个特点,就是如果当前字符串是“右边”的括号类型,那么它的前一个必定是与之匹配的括号。 声...
判断字符串中的括号是否匹配-C语言
判断字符串中的括号是否匹配-C语言递归实现: 先检搜一对匹配的括号,再对里面的内容进行匹配,匹配完后再继续往下匹配…… #include <stdio.h> #include <stdlib.h> #include <string.h>// 在start与end中搜索匹配 int fun(char *str, int start, int end) { char chLeft;
栈的应用之括号匹配检验
栈结构具有后进先出的固有特性,在程序设计中很有帮助。这里举一个例子,将栈应用与括号匹配的检验。         假设表达式中允许三种括号:小括号、中括号和大括号,嵌套的顺序任意。( [ ] ) { } 、[ { } ]等均为正确格式。检验括号是否匹配可用“期待的急迫程度”来描述。接收一个正括号后,计算机期待着一个与之匹配的反括号。如果此时接收到一个反括号,若与期待的匹配,则这种“期待”得到消解;
利用栈判断输入的表达式中的括号是否匹配(假设只含有左、右括号)
利用栈判断输入的表达式中的括号是否匹配(假设只含有左、右括号) bool Match(char exp[],int n) {   int i=0;   char e;   bool match=true;   SqStack *st;   InitStack(st);//初始化栈    while(i   {     if(exp[i]=='(')//当前字符为左括号,将其
[NYOJ] 02括号配对问题(c语言链栈实现)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=2 括号配对问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述现在,有一行括号序列,请你检查这行括号是否配对。 输入第一行输入一个数N(0 输出每组输入数据的输出占一行,如果该字符串中所含的括号是配对
<数据结构>栈的应用一:括号匹配检测
括号匹配检测问题的简单描述:假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,即([]())或者[([][])]等为正确的格式,([)]或者([][]等均为不正确的格式。 我实现的程序中包含三种括号,其实包含多少种都是一样的,重在理解结题思路,利用栈来解决一些问题。 下面给出我自己实现的源代码(仅供参考): “init.h”: #ifndef _INIT_H #defin
利用栈检测括号的配对情况
在编程语言中经常使用的括号有()、[  ]、{  } 这三种,怎么用程序来判断在程序中或者其他情况下这三种括号的配对情况呢? 首先来看一下,括号的匹配情况有如下四种: 1、左右括号不匹配--------比如  ( ( abc ) )  12 [ {  ]  } 2、左括号比右括号多-------比如  { [ ((ab13) ]  } 3、右括号比左括号多-------比如 ([ ]){
设计一个算法采用顺序栈判断表达式中的括号是否正确配对
设计一个算法采用顺序栈判断表达式中的括号是否正确配对。
判断给定表达式中的括号是否匹配
判断给定表达式中的括号是否匹配,表达式中的合法括号为”(“, “)”, “[", "]“, “{“, ”}”,这三个括号可以按照任意的次序嵌套使用。
用C语言检查输入括号是否匹配
检查括号是不是正确匹配输入 用压栈出栈检验括号是否正确输入,打印结果
数据结构实践——括号的匹配(栈)
本文是针对数据结构基础系列网络课程(3):栈和队列的实现项目。【项目3 - 括号的匹配】 假设表达式中允许三种括号:圆括号、方括号和大括号。编写一个算法,判断表达式中的各种左括号是否与右括号匹配。 例如,输入2+(3+4)*[2+{[3]}-8,输出匹配正确;输入2+(3+4*[2)+{[3]}-8,输出匹配错误。 提示: (1)遇到左括号入栈,遇到右括号后,出栈一个符号,看是否配对。
【c语言】判断一个文件里的括号是不是匹配
#include &amp;lt;stdio.h&amp;gt; int main(int argc,char **argv) {     int left=0,right=0; //文件描述符指向要检查的文件     FILE *fd;     char p; //命令行判断     if(argc &amp;lt; 2){         fprintf(stderr,&quot;Us....\n&quot;);         r...
数据结构与算法 判断括号是否匹配
数据结构与算法 判断括号是否匹配 一、简单说明     判断表达式中的半弧括号是否匹配,例如:&quot;(56-20)/(4+2)&quot;、&quot;(1+(56-20)/(4+2))-(2*3)&quot;中的括号是否匹配。 二、效果 三、主要思路     1、定义一个栈用来存储左括号'('。     2、扫描表达式,当字符为'('时,进栈。(只有'('进栈)     3、当字符为')'时,先判断栈是否为空,...
C++ 用栈实现字符串中括号匹配问题()
使用C++中的stack容器可以很容易的实现字符串中括号的匹配判断问题: #include #include #include using namespace std; int main() {     string str;     stack small;          cout     getline(cin,str);     for(int i=0;i
用c语言实现的括号匹配的源代码
void BracketMatch(char *str) { SeqStack S; int i; char ch; InitStack(S); for(i=0;str[i]!='\0';i++) { switch(str[i]) { case '(': case '[': case '{': Push(S,str[i]); break; case ')':if(IsEmpty(S)) { printf("\n右括号)多余!"); return;} else { GetTop(S,&ch); if(ch=='(') Pop(S,&ch); else { printf("\n对应的左右()括号不同类!"); return;} } break; case ']': if(IsEmpty(S)) { printf("\n右括号]多余!"); return;} else { GetTop(S,&ch); if(ch=='[') Pop(S,&ch); else { printf("\n对应的左右[]括号不同类!"); return;} } break; case '}': if(IsEmpty(S)) { printf("\n右括号}多余!"); return;} else { GetTop(S,&ch); if(ch=='{') Pop(S,&ch); else { printf("\n对应的左右{}括号不同类!"); return;} } break; } } if(IsEmpty(S)) printf("\n括号匹配!"); else printf("\n左括号多余!"); }
数据结构习题——7表达式括号匹配
time_limit 3000MS memory_limit 10000KB description 假设一个算术表达式中可以包含三种括号:圆括号“(”和“)”、方括号“[”和“]”和花括号“{”和“}”,且这三种括号可按任意的次序嵌套使用(如:…[…{…}…[…]…]…[…]…(…)...
[Java]利用栈判断括号是否完整配对
利用栈实现判断字符串中的括号是否都是配对的。 主要算法是依次读取字符串中的每一个字符,如果是左括号则将左括号压入栈中,如果是右括号则从栈中弹出最上面的字符,若两者不是同种括号或栈内已经没有字符就返回false,循环完成后返回true。 package com.example; /** * Created by XiaFF on 2014/11/18. * */ public c
栈判断 括号是否匹配
栈判断 括号是否匹配栈判断 括号是否匹配栈判断 括号是否匹配
判别给定表达式中所含括号是否正确配对出现的算法
假设一个算术表达式中可以包含三种括号:圆括号"(" 和 ")",方括号"["和"]"和花括号"{"和"}",且这三种括号可按任意的 次序嵌套使用(如:…[…{…}…[…]…]…[…]…(…)…)。编写判别给定表达 式中所含括号是否正确配对出现的算法(已知表达式已存入数据元素 为字符的顺序表中)。   实现下列函数: Status MatchCheck(SqList exp);
表达式括号匹配 一个表达式中包括变量、常量、操作符、圆括号,圆括号可以嵌套, 编写程序判断表达式中的括号是否正确匹配。输入任意一个表达式,判断其中括号是否匹配,匹配, 输出OK, 不匹配,输出NO。(表达式的长度小于50)
一个表达式中包括变量、常量、操作符、圆括号,圆括号可以嵌套, 编写程序判断表达式中的括号是否正确匹配。输入任意一个表达式,判断其中括号是否匹配,匹配, 输出OK, 不匹配,输出NO。(表达式的长度小于50)
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 全栈开发工程师 web全栈