第6週目--データ構造--データ構造のかっこの一致(スタック)
2257 ワード
/*
* Copyright (c) 2015,
* ( )
* All rights reserved.
* : listack.cpp
* :
* :2015 10 24
* :V1.0.1
* :windows8.1
* : : 、 。
,
* :
* :
*/
#include <stdio.h>
#include <malloc.h>
#define MaxSize 100
typedef char ElemType;
typedef struct
{
ElemType data[MaxSize];
int top; //
} SqStack; //
void InitStack(SqStack *&s); //
bool StackEmpty(SqStack *s); //
bool Push(SqStack *&s,ElemType e); //
bool Pop(SqStack *&s,ElemType &e); //
void InitStack(SqStack *&s)
{
s=(SqStack *)malloc(sizeof(SqStack));
s->top=-1;
}
bool StackEmpty(SqStack *s)
{
return(s->top==-1);
}
bool Push(SqStack *&s,ElemType e)
{
if (s->top==MaxSize-1) // ,
return false;
s->top++;
s->data[s->top]=e;
return true;
}
bool Pop(SqStack *&s,ElemType &e)
{
if (s->top==-1) // ,
return false;
e=s->data[s->top];
s->top--;
return true;
}
int main()
{
char c;
char st[50];
int d=1, i;
SqStack *s;
InitStack(s);
printf(" :");
scanf("%s", st);
for(i=0; st[i]!='\0'&&d; i++)
{
switch(st[i])
{
case'(':
case'[':
case'{':
Push(s, st[i]);
break;
case')':
Pop(s, c);
if(c!='(') d=0;
break;
case']':
Pop(s, c);
if(c!='[') d=0;
break;
case'}':
Pop(s,c);
if(c!='{') d=0;
break;
}
}
if(StackEmpty(s)&&d==1)
printf(" !!
");
else
printf(" !!
");
return 0;
}
</pre><pre name="code" class="cpp"> :
<img src="http://img.blog.csdn.net/20151025220906061" alt="" />