当前位置: 首页 > wzjs >正文

网站建设属于IT建设一个网站花多少钱

网站建设属于IT,建设一个网站花多少钱,wordpress中文表单生成,网络及it维护外包目录 前言 流程图 整体代码 关于不使用基本操作的代码 关于测试 前言 本篇文章主要整理了关于用栈实现左右括号匹配的代码。 栈是一种遵循后进先出(LIFO, Last In First Out)原则的抽象数据类型,非常适合用于处理括号匹配问题。 对于…

目录

前言

流程图

整体代码

关于不使用基本操作的代码

关于测试


前言

本篇文章主要整理了关于用栈实现左右括号匹配的代码。

栈是一种遵循后进先出(LIFO, Last In First Out)原则的抽象数据类型,非常适合用于处理括号匹配问题。

对于括号的匹配规则:在括号匹配中,最内层的括号对最先闭合。这意味着最近打开的左括号需要最先匹配到对应的右括号。这正好符合栈的后进先出(LIFO)特性。

流程图

整体代码

//2025.3.19 写下 用数组栈实现左右括号的配对 
#include<stdio.h>#define MaxSize 20 //栈中最多存放20个数据元素 
typedef struct {char data[MaxSize]; //数据域 int top; //栈顶指针 
}SqStack; //顺序栈的存储结构 //初始化栈
void InitStack(SqStack &S){S.top = -1;  //初始化栈顶指针 
}
//判断栈空
bool StackEmpty(SqStack S){if(S.top == -1) return true; //栈空else return false; //栈不空 
}
//元素入栈
bool Push(SqStack &S,char e){ //将元素e压入栈中 //首先判断栈是否满了if(S.top == MaxSize-1){printf("栈已满,出错!\n");return false; //不能入栈}//栈未满,将元素压入栈中S.data[++S.top] = e; //指针先自增一,然后再让元素入栈return true; 
}
//元素出栈 
bool Pop(SqStack &S,char &e){//首先判断栈是否为空if(StackEmpty(S) == true){printf("栈为空,出错!\n");return false; //不能出栈} //将栈顶指针指的元素出栈e = S.data[S.top--];//先将元素出栈,然后指针减一return true; 
}//对左右括号进行配对
bool bracketCheck(char str[],int length){ SqStack S;  //先声明一个栈S,系统已自动为其分配了内存空间 InitStack(S); //初始化栈 char e = {0};int i=0; //i用来依次读取str中的数据for(i=0;i < length;i++){//若该数据为左括号,则入栈 if(str[i] == '(' || str[i] == '{' || str[i] == '['){if(Push(S,str[i]) == false) //若元素入栈出错,则中止该程序break;else continue;}//若该数据为右括号,先判断栈是否为空,若不为空则弹出栈顶元素,并与该数据配对 else{if(StackEmpty(S)) return false; //扫描到右括号且当前栈为空,则匹配失败 Pop(S,e); //弹出栈顶元素 if(str[i] == ')' && e != '(') return false;if(str[i] == '}' && e != '{') return false;if(str[i] == ']' && e != '[') return false;}} //若配对结束,栈中还有元素,则匹配出错return StackEmpty(S);
}
int main(){char str[50] = {0};int i=0;printf("请输入括号字符串:\n");while(scanf("%c",&str[i]) && str[i] != '\n'){i++;}//puts(str); //输出字符数组 if(bracketCheck(str,i) == false){ //其中i表示字符串的长度 printf("括号序列不匹配!\n");}else{printf("括号序列匹配!\n");}return 0;
}

关于不使用基本操作的代码

//2025.3.20 写下
#include<stdio.h>#define MaxSize 20 //栈中最多存放10个数据元素 
typedef struct {char data[MaxSize]; //数据域 int top; //栈顶指针 
}SqStack; //顺序栈的存储结构 
//对左右括号进行配对
bool bracketCheck(char str[],int length){ SqStack S;  //先声明一个栈S,系统已自动为其分配了内存空间 S.top = -1; //初始化栈 char e = {0};int i=0; //i用来依次读取str中的数据for(i=0;i < length;i++){//若该数据为左括号,则入栈 if(str[i] == '(' || str[i] == '{' || str[i] == '['){//首先判断栈是否满 if(S.top == MaxSize-1) return false;S.data[++S.top] = str[i]; //指针先自增一,然后再让元素入栈continue;}//若该数据为右括号,先判断栈是否为空,若不为空则弹出栈顶元素,并与该数据配对 else{//先判断栈是否为空if(S.top == -1) return false; //弹出栈顶元素e = S.data[S.top--]; //先将元素出栈,然后指针减一if(str[i] == ')' && e != '(') return false;if(str[i] == '}' && e != '{') return false;if(str[i] == ']' && e != '[') return false;}} //若配对结束,栈中还有元素,则匹配出错if(S.top == MaxSize-1) return false;else return true;
}
int main(){char str[50] = {0};int i=0;printf("请输入括号字符串:\n");while(scanf("%c",&str[i]) && str[i] != '\n'){i++;}if(bracketCheck(str,i) == false){ //其中i表示字符串的长度 printf("括号序列不匹配!\n");}else{printf("括号序列匹配!\n");}return 0;
}

关于测试

当输入括号序列时,只支持在英文状态下的括号,若是输入的是中文状态下的括号,则会检测出错。我认为,是因为在遍历字符数组str时,每次只读取其中的一个char型数据为一个字节,而中文状态下的符号存储时(在我的编译器上)需要三个字节,因此在读取字符数组str时会出错。

并且,在输入str数组中的数据只能是括号哦,因为没有对其他字符做排除,若数组中有其它字符,会导致结果出错。

如果有错误,欢迎大家在评论区指出,谢谢~~


文章转载自:

http://YhQxV4WI.bmpjp.cn
http://lfD2KUwV.bmpjp.cn
http://cY7opVIg.bmpjp.cn
http://aYtt6sPa.bmpjp.cn
http://QmyUGJXJ.bmpjp.cn
http://K29adDRx.bmpjp.cn
http://KOnjrQSQ.bmpjp.cn
http://yXWVtvvJ.bmpjp.cn
http://SdeQZq2a.bmpjp.cn
http://FRE83njx.bmpjp.cn
http://nwKqMtfh.bmpjp.cn
http://yapaiTTk.bmpjp.cn
http://6YcAGk61.bmpjp.cn
http://3fIbe1Qt.bmpjp.cn
http://nZne5aA6.bmpjp.cn
http://XfZYmPNo.bmpjp.cn
http://P00cePxF.bmpjp.cn
http://Gn1CWr52.bmpjp.cn
http://fQgXymD6.bmpjp.cn
http://Jd8sii0l.bmpjp.cn
http://kjK4AjgB.bmpjp.cn
http://GJSGTHPE.bmpjp.cn
http://y0yqwbmQ.bmpjp.cn
http://8jchQbEC.bmpjp.cn
http://anfZt5OI.bmpjp.cn
http://df9pUHIu.bmpjp.cn
http://8bPCGHZJ.bmpjp.cn
http://DsxdHlMv.bmpjp.cn
http://Kdn02g5X.bmpjp.cn
http://dfhcFEEf.bmpjp.cn
http://www.dtcms.com/wzjs/618886.html

相关文章:

  • 如何让百度收录自己的网站一站式做网站企业
  • 网站目录权限设置如何做网站推广获客
  • 如何做网站软件阜城县网站建设报价
  • 网站建设谈判网站开发考什么证
  • 网站国际网络备案号网联科技网站建设
  • 响应式网站建设系统前端和后端哪个难
  • 潍坊信息网网站建设做体育赛事网站公司
  • 重庆网网站建设公司免费的个人简历模板 简约
  • 三好街做网站公司海南网站建设
  • 个人做动漫资源网站有哪些天津建设工程招标信息网官网
  • 百度信誉任何在网站展示网站后端开发流程
  • 网站备案免费的吗什么行业需要做网站和推广
  • 温州市永嘉上塘建设局网站什么是网络营销的综合性工具
  • 太原站扩建后的规模滕州网站建设哪家好
  • 响应网站建设东莞网络营销网络培训学校
  • 四川广汇建设有限公司网站涿鹿做网站wl17581
  • 建网站投放广告赚钱网站上传后
  • 怎么做网站加盟濮阳网警
  • 做餐饮公司网站友链购买
  • wap网站开发汕头澄海玩具厂
  • 用flash做网站公司简介怎么写 范文
  • 做公司网站有用吗为什么最近好多网站打不开了
  • 南宁经典网站建设做个营销型网站要多少钱
  • 邯郸做网站推广多少钱这些网站涵盖了不同的主题和类型
  • 深圳手机企业网站设计网络营销策划方案15篇要求
  • 那些行业需要做网站贡井区建设局网站?
  • 线上网站开发相关书籍怎么制作自己的链接
  • 北京网站制作网站优化苏州建网站公司
  • 乐山网站开发公司电话wordpress书插件
  • 如何制作网站教程视频网站后台设置关键词在哪设