데이터 구조 - 스 택 괄호 일치 실현

데이터 구조 - 스 택 괄호 일치 실현
진정 으로 공부 한 후에 야 이른바 아 줌 마 들 이 좀 더 열심히 공부 한 것 에 불과 하 다 는 것 을 알 게 되 었 다.예전 에는 왜 직접 하지 않 았 는 지 모 르 겠 지만, 원래 이렇게 간단 하 다.
#include 
#include 
#include 
#include 
/**      **/
typedef struct Data{
	char c;
};
typedef struct Stack{
	Data data;
	Stack *top;	//      
};
/**     **/
void InitStack(Stack *S){
	S->top = NULL;
}
/**       **/
int StackEmpty(Stack S){
	//    1    0
	if(S.top==NULL) return 1;
	else return 0;
}
/**      **/
void GetTop(Stack S,Data *d){
	if(StackEmpty(S)==1)
		printf("It's an empty stack!");
	else{
		d->c = S.top->data.c;
	}
}
/**           **/
void PushStack(Stack *S,Data d){
	Stack* p = (Stack *)malloc(sizeof(Stack));
	p->data.c = d.c;
	p->top = S->top;
	S->top = p;
}
/**          **/
void PopStack(Stack *S,Data *d){
	if(StackEmpty(*S)==1){
		printf("It's an empty stack!
"); }else{ Stack *p = S->top; S->top = p->top; d->c = p->data.c; } } /** **/ void ClearStack(Stack *S){ if(StackEmpty(*S)==1){ printf("It's already an empty stack!
"); }else{ S->top = NULL; } } /** **/ void PrintStack(Stack S){ if(StackEmpty(S)==1){ printf("It's an empty stack!
"); }else{ printf("name----age
"); while(S.top!=NULL){ printf("%s
",S.top->data.c); S.top = S.top->top; } } } /** **/ int Match(Data r,Data s){ // 1 if(r.c==')'&&s.c=='('){ return 1; }else if(r.c=='}'&&s.c=='{'){ return 1; }else if(r.c==']'&&s.c=='['){ return 1; }else{ return 0; } } /** **/ void CheckMatch(char *m,Stack *S){ Data r,s; while(*m){ switch (*m){ case '(': case '{': case '[': s.c = *m; PushStack(S,s); *m++; break; case ')': case '}': case ']': if(StackEmpty(*S)){ printf("Location %s can't match!
",*m); return; } GetTop(*S,&s); r.c = *m; if(Match(r,s)){ PopStack(S,&s); *m++; }else{ printf("Location %c can't match!
",*m); return; } default: *m++; } } if(StackEmpty(*S)){ printf("Match successfully!
"); }else{ printf("Can't match!Lack of right bracket!
"); } } void main(){ char d[12]; Stack S; char *p; printf("Input your expression:"); gets(d); p = d; // InitStack(&S); CheckMatch(p,&S); system("pause"); }

좋은 웹페이지 즐겨찾기