#include<stdio.h>
#include<iostream.h>
#include<stdlib.h>
#include<malloc.h>
typedef char ElemType;
typedef struct stack
{
ElemType data;
struct stack *top;
}LinkStack;
int InitStack(LinkStack *&ls)
{
ls=NULL;
return 1;
}
int ClearStack(LinkStack *&ls)
{
LinkStack *p;
if(ls==NULL)
return 0;
while(ls!=NULL)
{
p=ls;
ls=p->top;
free(p);
}
return 1;
}
int StackEmpty(LinkStack *ls)
{
if(ls==NULL)
return 1;
else return 0;
}
int StackLength(LinkStack *ls)
{
int i=0;
LinkStack *p=ls;
while(p!=NULL)
{
p=p->top;
i++;
}
return i;
}
ElemType GetTop(LinkStack *ls)
{
ElemType e;
if(ls==NULL)
return 0;
e=ls->data;
return e;
}
int Push(LinkStack *&ls,ElemType e)
{
LinkStack *p;
p=new struct stack[sizeof(LinkStack)];
p->data=e;
p->top=ls;
ls=p;
return 1;
}
int Pop(LinkStack *&ls,ElemType &e)
{
LinkStack *p;
if(ls==NULL)
return 0;
else
{
p=ls;
e=p->data;
ls=p->top;
free(p);
}
return 1;
}
//8. 访问栈中元素
void StackPrint(LinkStack *ls)
{
LinkStack *p=ls;
if(ls==NULL)
return ;
while(p!=NULL)
{
cout<<p->data<<" ";
p=p->top;
}
}
//9. 写一算法,利用栈操作判断一字符串是否是回文。
int huiwen(ElemType str[])
{
int i=0;
ElemType ch,temp;
LinkStack *ls;
InitStack(ls);
while((ch=str[i++])!='\0')
Push(ls,ch);
i=0;
while(!StackEmpty(ls))
{
Pop(ls,temp);
if(temp!=str[i++])
return 0;
}
return 1;
}
//10. 利用栈的基本信息,编写一个算法输入若干整数,以0标识输入结束。然后按与输入相反的次序输出这些数。
int Reverse()
{
ElemType ch;
LinkStack *ls;
InitStack(ls);
cout<<"请输入你要输入的整数:";
cin>>ch;
while(ch!=48)
{
Push(ls,ch);
cin>>ch;
}
while(!StackEmpty(ls))
{
Pop(ls,ch);
cout<<ch<<" ";
}
return 1;
}
//12. 利用栈进行括号匹配检验。
int Match(char str[])
{
int i=0;
LinkStack *ls;
InitStack(ls);
ElemType ch,e;
while(str[i]!='\0')
{
if(str[i]=='('||str[i]=='[')
{
Push(ls,str[i]);
ch=GetTop(ls);
}
else if(ch=='('&&str[i]==')')
{ Pop(ls,e);ch=GetTop(ls);}
else if(ch=='['&&str[i]==']')
{ Pop(ls,e);ch=GetTop(ls);}
else
return 0;
i++;
}
if(StackEmpty(ls))
return 1;
else
return 0;
}
void main(){
cout<<endl<<"括号匹配:"<<endl;
ElemType str2[]="[[[]()()]]()([])(([]))";
cout<<Match(str2);
}
这是我编写的关于如何判断括号配对的程序,我觉得应该没什么问题,可总是不能出来结果,还请知道的人
告诉小弟一声,或者大家还有什么别的方法现实,来分享一下吧!
分享到:
相关推荐
易语言括号匹配算法源码,括号匹配算法,括号是否匹配
括号匹配括号匹配算法括号匹配算法括号匹配算法
C语言的括号匹配算法,用了栈,数据结构栈的应用的常用程序
括号匹配c++括号匹配算法.zipc++括号匹配算法.zipc++括号匹配算法.zipc++括号匹配算法.zipc++括号匹配算法.zipc++括号匹配算法.zip
括号匹配算法 括号匹配算法 括号匹配算法 括号匹配算法
利用栈的括号匹配算法 C语言数据结构 利用栈的括号匹配算法 C语言数据结构
c语言实现的括号匹配算法 无括号算术表达式处理算法 #include "seqstack.h" #include "stdio.h" void BracketMatch(char *str); void BracketMatch(char *str) /* str[]中为输入的字符串,利用堆栈技术来检查该...
c++括号匹配算法。zip c++括号匹配算法。zip c++括号匹配算法。zip c++括号匹配算法。zip
易语言源码易语言括号匹配算法源码.rar 易语言源码易语言括号匹配算法源码.rar 易语言源码易语言括号匹配算法源码.rar 易语言源码易语言括号匹配算法源码.rar 易语言源码易语言括号匹配算法源码.rar 易语言源码...
易语言括号匹配算法源码.rar
Stack to achieve a brace matching algorithms, data structures, the matching parenthesis
数据结构中括号匹配问题 用C语言实现的 结构很清晰
C语言实现表达式括号匹配算法及程序
顺序栈实现括号配对
圆括号匹配算法,数据结构c语言,只写了圆括号的匹配,其他的可以参考自己写下。