C语言 栈的应用----括号的匹配

编程入门 行业动态 更新时间:2024-10-24 12:20:46

C语言 栈的应用----<a href=https://www.elefans.com/category/jswz/34/1767470.html style=括号的匹配"/>

C语言 栈的应用----括号的匹配

栈的应用

    • 简单干脆直奔主题:
    • 注意:

简单干脆直奔主题:

代码实现的功能就是对括号的匹配工作,原理就是利用了栈的基本性质,先让“(” “{” “[” 进入栈,当不是以上三个括号时,弹出栈顶符号判断是否与当前符合匹配;

注意:

在本此代码中引用了字符串的相关概念,有兴趣的同学可以网上查找相关理论。eg:用指针变量存储字符串;

/*括号匹配问题;(栈)
*/ 
#include <stdio.h>		//引用 输入(scanf)、输出(printf)函数的头文件; 
#include <stdlib.h>		//引用 malloc free函数的头文件; 
//定义栈的结构;
typedef struct LinkNode{char data;			//存放数据元素;LinkNode *next;		//指针域; 
}LinkNode, *LinkStack;//初始化栈;
void InitStack(LinkStack &S)
{S = NULL;
}//判断栈空; 
bool EmptyStack(LinkStack S)
{if (S == NULL)return true;elsereturn false;
}//新增元素:入栈;-->单链表的前插操作;
void InsertStack(LinkStack &S,char str)
{LinkNode *p = (LinkNode *)malloc(sizeof(LinkNode));//printf("input what you want to insert:");//scanf("%s",p->data);p->data = str;//strcpy(p->data,str);p->next = S;S = p;
}//删除元素:出栈;
bool DeleteStack(LinkStack &S,char &elem){if (EmptyStack(S))		//栈空报错; return false;LinkNode *p = S;		//定义要删除的结点; //printf("the Elem is Deleted: %s",p->data); elem = p->data;S = p->next;free(p);return true;
}int main() {//首先初始化栈;printf("The main function is:\n");printf("栈的应用----括号的匹配(英文状态)\n");LinkStack S;	InitStack(S);			//初始化栈;//定义一个指针变量,存放字符串数组的首地址; char *str = (char *)malloc(sizeof(char));	 printf("input a string:");scanf("%s",str);//循环判断元素是否为空; while(*str){//有*,输出指针所指内容;没有*,输出10进制地址所对应的字符; //printf("%c",*str);	if (*str == '(' or *str == '[' or *str == '{')InsertStack(S,*str);	//将左括号在内的元素进栈; else{if (EmptyStack(S))			//栈中没有左括号,匹配失败; {printf("There is not '(' or '[' or '{' ");return 1;}char elem;				//定义一个字符串,记录当前要出栈的元素; DeleteStack(S,elem);	//栈顶元素出栈; //分别判断出栈元素与当前符号是否匹配;if (elem != '(' and *str == ')'){printf("Matching failed('(')!");return 0;}if (elem != '[' and *str == ']'){printf("Matching failed('[')!");return 0;}if (elem != '{' and *str == '}'){printf("Matching failed('{')!");return 0;}				}*str++;			//指针加1;指向下一个元素; }if (!EmptyStack(S))	//若此时栈中还有元素,则匹配失败;{printf("Matching failed!");return 1; }			 printf("Successful!!!");return 0;
}

写在最后面:
代码如有不足之处,留言相互学习

更多推荐

C语言 栈的应用----括号的匹配

本文发布于:2023-07-27 22:21:02,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1231668.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:括号   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!