- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
括号匹配的报告
实验题目 括号匹配
实验报告
实验目的与要求
?利用链栈实现括号匹配算法;
要求:运用链表建立一个栈S。检验括号是否匹配的方法可用“期待的急迫程度”来描述。每读入一个括号,若是右括号,则或者使置于栈顶的最急迫的期待得以消解,或者是不合法的情况;若是左括号,则作为一个新的更急迫的期待压入栈中,自然使原有的在栈中的所有未消解的期待的急迫性都降了一级。另外,在算法的开始和结束时,栈都应该是空的。
实验方案
算法思想:利用栈的后进先出性质,编写的括号({[]})匹配算法,如果是{([])}形式的括号,显示匹配,如果是(}])[则显示不匹配,基本思想:
1.遇到左括弧,则进栈,
2.遇到右括弧,则和栈顶的括弧检验是否匹配,如果匹配,则将左括弧出栈
3.全部匹配时,栈应该是空
#define NULL 0
typedef struct LNode{
char data;
char *next;
char *top; /*栈顶指针*/
}LNode,*LinkStack;
int Init(LinkStack S) /*置栈空*/
{ S=(LinkStack)malloc(sizeof(LNode));
S-top=NULL;
}
int StackEmpty(LinkStack S) /* 判栈空*/
{ if(S-top==0)
return(1);
else
return(0);
}
int Push(LinkStack S,char e) /*进栈Push*/
{ char *p=(LinkStack)malloc(sizeof(LNode));; /*申请一个结点空间*/
p-data=e;
p-next=S-top;
S-top=p;
return 1;
}
Int Pop(LinkStack S,char e)
{char *p=(LinkStack)malloc(sizeof(LNode));;
if(S-top!=NULL)
{p-data=e;
p=S-top;
S-top=p-next;
free(p);}
return 1;
}
int Top(LinkStack S) /*取栈顶元素 */
{char e;
if(StackEmpty(S)) return 0;
else { e=S-top;
return 1; }
}
int Brackets(LinkStack S,char *str)
{int i=0,X=0;
char e;
printf(Please input string:\n);
scanf(%s,str);
while(str[i]!=\0)
{
switch(str[i])
{
case (:push(S,str[i]);break;
case [:push(S,str[i]);break;
case {:push(S,str[i]);break;
case ):{pop(S,e);if(e!=()X=1;}break;
case ]:{pop(S,e);if(e!=[)X=1;}break;
case }:{pop(S,e);if(e!={)X=1;}break;
default:break;
}
if(X)break;
i++;
}
if(!Xstackempty(S))
printf(You are right!the brackets is match!\n);
else
printf(Wrong!!the brackets isnt match!\n);
return 1;
}
#includestdio.h
void main()
{ char str[100];
LinkStack S;
Init(S);
printf(-----------------------------------\n);
printf( WELCOME \n) ;
printf(-----------------------------------\n) ;
Brackets(S,str);
printf(\n\n
您可能关注的文档
- 应用写作词语.doc
- 嵌入式编程技术实验指导.doc
- 嵌入式系统组成及发展趋势.doc
- 广西公需科目考试《专业技术人员创新与创业能力建设答案》得分94分.doc
- 当代教育心理学复习.doc
- 循环流化床设备及系统.docx
- 开关电源(SPS)超级讲义之—原理1.doc
- 微机原理与接口技术8中断技术.doc
- 微机原理与接口技术考题汇总.docx
- 张敏强版《教育和心理统计学》1到3章读书笔记.doc
- 山东省潍坊市高密市2024-2025学年七年级下学期4月期中数学试题[含答案].pdf
- 2025年全球市场服装用生物基聚酰胺纤维 GIR3480中文总体规模、主要生产商、主要地区、产品和应用细分研究报告.docx
- 深入分析2025年区块链电子证据存证在数字娱乐领域的应用报告.docx
- 山东省潍坊市诸城市2024-2025学年七年级下学期4月期中数学试题[含答案].pdf
- 金融行业数字员工在风险管理中的创新应用场景分析.docx
- 2025年医疗美容行业市场规模及增长潜力预测报告.docx
- 宠物经济崛起,智能健康监测设备研发与应用市场前景研究报告.docx
- 2024-2025学年小学劳动三年级下册湘教版《劳动教育》教学设计合集.docx
- 新能源汽车轻量化车身轻量化设计对整车寿命影响鉴定报告.docx
- 2024-2025学年小学劳动六年级下册湘教版《劳动实践指导手册》教学设计合集.docx
文档评论(0)