c语言的括号匹配问题

作者&投稿:嬴胁 (若有异议请与网页底部的电邮联系)
如何用c语言实现括号匹配的问题?~

先按顺序取出所有的括号.然后循环删除_相邻的_差为一或二的_点.最后如果表空则匹配.
单向链表:

#include
#include
#include
#define LEN 80
typedef struct list{
char node;
struct list* next;
}list,*plist;

void iniList(plist);
int isEmpty(plist);
int listAppend(plist,char);
int delBracketsFormList(plist);

int main(int argc,char* argv[]){
char test[LEN];
int i;
list a;
plist p;
p=&a;
iniList(p);
scanf("%80s",test);
for (i=0;i<LEN;i++){
switch(test[i]){
case '[': case']': case'{': case'}': case'(': case')':
listAppend(p,test[i]);
break;
default:continue;
}
}
delBracketsFormList(p);
if (isEmpty(p)){
printf("括号匹配!
");
}
else
printf("括号不配对!
");
return 0;
}

void iniList(plist aplist){
aplist->next=NULL;
aplist->node='\0';
}

int isEmpty(plist aplist){
return aplist->next==NULL?1:0;
}

int listAppend(plist aplist,char a){
plist bplist=aplist,anode;
while (bplist->next){
bplist=bplist->next;
}
anode=(plist)malloc(sizeof(list));
if (!anode)exit(-1);
anode->node=a;
anode->next=NULL;
bplist->next=anode;
return 0;
}
int delBracketsFormList(plist aplist){
plist temp;
int has=1;
if (isEmpty(aplist))
return 0;
while(has){
has=0;
temp=aplist;
while (temp->next){
if(temp->next->next){
if((temp->next->next->node - temp->next->node == 1)||(temp->next->next->node - temp->next->node == 2)){
temp->next = temp->next->next->next;
has=1;

}
else
temp = temp->next;
}
else
temp =temp->next;
if(!has)break;
}

}
return 0;
}

输入输出格式什么的都没有

#include <stdio.h>

#include <stdlib.h>

int main()

{

    int i,count;

    char ch[10001],ch1[10001];

    while(gets(ch)!=NULL)

    {

        count=-1;

        for(i=0;ch[i]!='\0';i++)

        {

            if(ch[i]=='('||ch[i]=='['||ch[i]=='<'||ch[i]=='{')

            {

                ch1[++count]=ch[i];

            }

            else

            {

                if(ch[i]-ch1[count]<3)

                {

                    count--;

                }

                else

                {

                    break;

                }

            }

        }

        if(count==-1)

            printf("YES
");

        else

            printf("NO
");

    }

    return 0;

}




C语言 判断括号()是否匹配
cin>>a[i];} sqstack s;inistack(s);for (int j=0;j<total;j++){ if(a[j]=='(')push(s,a[j]);else if(a[j]==')')pop(s,a[j]);} if(s.base==s.top)cout<<"true";\/\/匹配完后,如果栈为空,则括号匹配正确 else cout<<"failed";system("pause");return 0;} ...

易语言建程序出现 括号符不匹配
尝试不要将 到文本 命令 嵌套到 信息框命令内 .<正常代码,忽略...> .局部变量 文本,文本型文本 = 到文本(剩余次数) 信息框("密码错误,你还有"+文本+"次输入机会") 另外,其实你的代码在其他的地方也有错误 比如变量[剩余次数]的声明,由于是局部变量,在没有赋值的情况下,值是0,在向下...

C语言语法错误 : “{”咋解决?
括号不匹配。可能是真的有括号不匹配,也可能是在结果或者类声明的大括号后面没有加分号。找找,很容易发现。另外,编程后注意一定的格式,规范有利于发现错误。最后再装个插件,VAX之类。

c语言递归判断大中小括号是否匹配的问题,这个程序我没想通哪里出问题...
你的问题估计出在fun函数里if判断中,达成条件return了结果后,下一步的fun(++p)都不会再执行。当某一个计数器小于0时,你期望的继续递归没了。其实没那么复杂。我改了一个给你。纯手机输入,请采纳。include <stdio.h>#include <stdlib.h>int fun(char *p){ int k1=0,k2=0,k3=0; ...

C语言编程:输入一位操作数的算术表达式,判断左括号与右括号是否匹配,并...
printf("括号匹配!\\n");} else printf("括号不配对!\\n");return 0;} void iniList(plist aplist){ aplist->next=NULL;aplist->node='\\0';} int isEmpty(plist aplist){ return aplist->next==NULL?1:0;} int listAppend(plist aplist,char a){ plist bplist=aplist,anode;while ...

C语言判断给定表达式的括号是否匹配
'}' )rightb++;} n=i;for(i=0;i<n;i++){ if(output[i]==1)printf("yes\\n");else printf("no\\n");} system("pause");return 0;} 这是程序,当输入星号*就结束。不论是否一行只有它。有点不符合题意呃。你可以改改。上面那个人写的为单行输入。且没有考虑中括号和大括号。

编写c\/c++函数,验证一个字符串形式的表达式中的括号是否匹配,其中括号...
C的话,大概的思路是 用数组接收字符串,按顺序提取出各种括号(if语句),左边的放一起,右边的放一起(可以用栈存储,要是没学过用数组也行),然后就开始匹配(用个循环,左右两边要匹配,要是有一组不成功则直接return),当然,你可以自己在开始循环之前设定一些筛选条件,例如两边总数不一样...

c语言问题:出现'unexpected end of file found”是怎么回事呀?_百度...
通常是大括号匹配出了问题:意思是:"发现意外的文件结束"end of file就是EOF是传输控制符,在C源文件里要是大括号没有‘’}‘’这个给他匹配完,那么在编译栈里的"{"就不能消去,出现EOF时栈不为空,于是有:'unexpected end of file found”就是文件本不应该结束的,但是它结束了,编译器不会...

求用C语言做简单的括号匹配程序 ?
括号问题 include <string.h> include <stdio.h> include <stdlib.h> define MaxStackSize 100 typedef char DataType;include "SeqStack.h"void ExpIsCorrect(char exp[], int n)\/\/判断有n个字符的字符串exp左右括号是否配对正确 { SeqStack myStack; \/\/定义链式堆栈 int i;char c;Stack...

Source Insight中代码存在条件编译的情况下,大括号配对的问题?
Source Insight也不是神,尤其对于这种对于括号嵌套还要带条件编译的情况,如果多出现几次这种情况,甚至可能文件的函数\/变量\/宏定义列表都无法进行解析了。所以写的时候尽量避免这种情况出现,象你说的这种情况,把括号匹配放到条件编译的外面不是更好吗?一目了然,简单明了,如下:define DEST void main...

南沙群岛13288281078: C语言判断给定表达式的括号是否匹配 -
掌梁明目: #include <stdio.h> #include <stdlib.h>int main(int argc, char *argv[]) {char c;int i=0,n;int output[100];int lefts=0,leftm=0,leftb=0;int rights=0,rightm=0,rightb=0;while((c=getchar())!='*'){if(c=='\n'){if(lefts == rights && leftm == rightm && leftb ==...

南沙群岛13288281078: c程序设计中的括号匹配 问题描述 1.设某一算术表达式中包含圆括号、方括号和花括号三种类型的括号,编 -
掌梁明目: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50#include <iostream> #include <string> #include <stack>boolmatch(conststd::string & s);intmain() ...

南沙群岛13288281078: C语言括号匹配问题 -
掌梁明目: #include<stdio.h> int main() { int n,j,i; scanf("%d",&n); for(;n>0;n--) { char s[1000]={0}; //不超过1000表示最示最大1000个字符,要给\0留个位置 scanf("%s",s); j=0; //j每次都要在这里赋初值0 for(i=0;s[i];i++) { if(s[i]==')') { j--; if ( j<0 ) //遇到)就要...

南沙群岛13288281078: C语言关于括号匹配的问题 -
掌梁明目: void Pop(char *g){ *g=*(--stack1.top); }-------- void main() { char a,*b=&a;

南沙群岛13288281078: C语言问题 括号配对 -
掌梁明目: #include <iostream>#include <stack>#include <string> using namespace std; int main() { int N; cin>>N; while(N--) { string a; stack<char> s; cin>>a; for(int i=0;i<a.size();i++) { if(a[i]=='('||a[i]=='[') s.push(a[i]); else if(a[i]==')') { if(!s.empty()&&s.top()=='(') ...

南沙群岛13288281078: c语言括号配对问题 -
掌梁明目: #include#includeint isPair(char *s){ int i,j=0,k=0; for(i=0;s[i]!='\0';i++) { if(s[i]=='(') j++; if(s[i]==')') k++; } if(j==k) return 1; return 0;}int main(){ int n; char *s; scanf("%d",&n); s=(char*)malloc((n+1)*sizeof(char)); scanf("%s",s); if(isPair(s)) printf("Yes\n"); else printf("No\n"); free(s); return 0;}

南沙群岛13288281078: 求C语言括号配对问题答案
掌梁明目: 头文件:(另存为SeqStack.h)typedef struct{ DataType stack[MaxStackSize];int top;} SeqStack;void StackInitiate(SeqStack *S) /*初始化顺序堆栈S*/{ S->top = 0; /*定义初始栈顶下标值*/ }int StackNotEmpty(SeqStack S)/*判顺序堆栈S非空否,...

南沙群岛13288281078: c语言括号匹配 -
掌梁明目: 有些特殊解没考虑:当左括号溢出的时候(即左括号大于右括号) 如:1 2 3 4 5//在一个合法的括号匹配 左边 加上 不比最外层括号小 的括号 程序将输出错误. 如 { //以及单单一个[,(,<,其实就是在合法的空串外面加左括号 [[[] //在合法的[]左边加上[ {<<>> //在合法的<<>>左边加{

南沙群岛13288281078: c语言括号配对问题
掌梁明目: #include&lt;stdio.h&gt; int main() { int n,j,i; scanf("%d",&amp;n); for(;n&gt;0;n--) { char s[1000]={0}; //不超过1000表示最示最大1000个字符,要给\0留个位置 scanf("%s",s); j=0; //j每次都要在这里赋初值0 for(i=0;s[i];i++) { if(s[i]==')') { j--; if ( j&lt;...

南沙群岛13288281078: C语言 判断括号()是否匹配 -
掌梁明目: char str[100]; int i, count = 0; gets(str); for (i = 0; str[i] != '\0' && count >= 0; i ++) {switch (str[i]){case '(':count ++;break;case ')':count --;break;} } if (count != 0)printf("error\n"); elseprintf("right\n");

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网