/****************************************************************
--程序描述: 输入不同刮号,判断是否匹配
--修改原因: 从前代码写不够规范
--修改日期: 2009.5.29
--修改人: 吴强
--编辑工具and语言 Turbo C for Windows , C语言
--输入要求: 只可输入 {, [, (, ), ], } 6种符号,并以空格表示结束
***********************************************************************/
#include
#include
#include
typedef struct node
{
char date;
struct node *next;
}Node;
Node *Push(Node *s, char c)
{
Node *r;
if (s == NULL)
{
r= (Node *)malloc( sizeof(Node) );
r->date= c;
r->next= NULL;
s= r;
return s;
}
else
{
r=(Node *)malloc( sizeof(Node) );
r->date= c;
r->next= s;
s= r;
return s;
}
}
Node *Pop(Node *s)
{
Node *p;
Node *q;
if (s == NULL)
{
printf("Stack kong");
exit(0);
}
else
{
p= s;
s= s->next;
q=(Node *)malloc( sizeof(Node) );
q->date= p->date;
q->next= s;
free(p);
return q;
}
}
int StackEmpty(Node *s)
{
if (s == NULL)
{
return 1;
}
else
{
return 0;
}
}
main()
{
Node *stack;
Node *stackRight;
Node *StackAllTop;
Node *StackRightTop;
char c;
stack= NULL;
stackRight= NULL;
c= getchar();
while (c != ' ')
{
stack= Push(stack,c);
c= getchar();
}
while ( !StackEmpty(stack) )
{
StackAllTop= Pop(stack);
stack= StackAllTop->next;
if ( StackAllTop->date == '}' ||
StackAllTop->date == ']' ||
StackAllTop->date == ')' )
{
stackRight=Push(stackRight,StackAllTop->date);
}
else if ( StackAllTop->date == '{' ||
StackAllTop->date == '[' ||
StackAllTop->date == '(' )
{
if ( stackRight == NULL )
{
printf("result error!!!/n");
exit(0);
}
StackRightTop= Pop(stackRight);
stackRight= StackRightTop->next;
if ( StackAllTop->date == '(' )
{
//判断是否匹配,StackAllTop->date+1 就是 ')'
if ( StackAllTop->date+1 != StackRightTop->date )
{
printf("result error!/n");
exit(0);
}
}
else if ( StackAllTop->date == '[' || StackAllTop->date == '{' )
{
//StackAllTop->date+1 就是 ']'或'}'
if ( StackAllTop->date+2 != StackRightTop->date )
{
printf("result error! /n");
exit(0);
}
}
} //end elseif
} //end while
printf("result correct! /n");
}
刮号判断
最新推荐文章于 2021-05-22 09:46:17 发布
本文介绍了一个使用栈数据结构实现括号匹配的C语言程序。该程序能够检查输入字符串中的括号(包括圆括号、方括号和花括号)是否正确配对。通过逐个读取字符并利用栈来跟踪左括号,可以有效地验证括号的匹配性。
262

被折叠的 条评论
为什么被折叠?



