[c语言括号匹配]有些特殊解没考虑:当左括号溢出的时候(即左括号大于右括号) 如: 1 2 3 4 5 //在一个合法的括号匹配 左边 加上 不比最外层括号小 的括号 程序将输出错误。 如 { //以及单单一个[...+阅读
思路倒是简单,就是利用栈来匹配。简单的数据结构应该包括 符号类型(区分小中大括号),括号出现在字符串的位置这些。
读入字符,如果是左括号,则入栈,如果是左注释/则看后面是否有*如果有,则一直到*/才结束。如果是有括号,则看是否跟栈上匹配,如果匹配,则把这个括号左右位置和类型放入一个数组什么的,以备后面用户检索对应位置。如果不匹配,则有错误。到最后,栈应该为空,否则也是不匹配。具体代码编写需要考虑更多情况,比如不能越过字符数组边界等。
随风的代码没有处理注释,另外,没有记录符号配对位置。还有好像只能处理括号了,不太符合题意要求
以下为关联文档:
c语言括号配对程序//这题也可用到数组完成的,如下所示,有问题可以随时联系 //不过你给出的输出结果不正确吧,应是这样的: /* 0 16 1 5 11 15 */ #include <stdio.h> #include "stdlib.h" #include "i...
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...
c程序设计中的括号匹配问题描述 1设某一算术表达式中包含圆括号int isMatch(char *expr) { int i; int flag1 = 0,flag2 = 0,flag3 = 0; for(i = 0; expr[i]; ++i) { if(expr[i] == '(') ++flag1; if(expr[i] == ')') --flag1; if(expr[i...
判断圆括号是否配对用C语言如何实现如果只有圆括号(没有[ ] 或 { }),不需要构造一个栈。因为用栈实现时,栈里装的都是一模一样的左括号 '(' ,因此我们只需定义一个 整型变量 来记录 栈中元素的个数 即可。具体代码如...
数据结构里括号匹配的程序用C语言编写的#includeusing namespace std; #define maxsize 100 struct sStack { char sign[maxsize]; int top; }; int InitsStack(sStack &SS) { SS.top=-1; return 1; } int IsEmpty...
编写一个测试程序检查一个C语言程序中括号的配对情况头文件:(另存为SeqStack.h)typedef struct{ DataType stack[MaxStackSize]; int top;} SeqStack;void StackInitiate(SeqStack *S) /*初始化顺序堆栈S*/{ S->top = 0; /*定义初...
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...
c语言括号匹配问题栈我写的程序感觉有点错找不到原因大概有这3个问题:1. 资源没有清理2. 部分逻辑错误3. 栈操作错误 带注释修改如下:#include#include#includestruct Node { char fuhao; struct Node *next; }; struct S { stru...
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=...