괄호 일치 알고리즘 구현 (c 언어)

제목 괄호 일치 알고리즘 구현 (c 언어)
#include 
#include 
#include
#define size 50
typedef struct{
	char elem[size];
	int top;
}seqstack ;
void initStack(seqstack *s)
{
	s->top=-1;
}
int Push(seqstack *s,char str)
{	int i=0;
	if(s->top==size-1) return 1;
	else if (str!='\0')
    {
    		s->top++;
	    s->elem[s->top]=str;
	   
	}
	
	return 0;
}
int pop(seqstack *s ,char *str)
{
	if(s->top==-1) return 1;
	else {
	
	 *str=s->elem[s->top];
	  printf("%c",*str);
	 s->top--;
	 
	}
	return 0;
}
int gettop(seqstack *s,char *ch)
{	

	if(s->top==-1) return 1;
	else{
	
		*ch=s->elem[s->top];
		
		return 1;	    
	}	
}
_Bool  Match(char ch,char str)
{
	if((ch=='')||(ch=='{'&&str=='}')||(ch=='('&&str==')'))
	return 1;
	else
	return 0;
}
_Bool isEmpty(seqstack *s)

{
	if(s->top==-1) return 1;
	else return 0;
}
void brackMatch(char *str)
{
	seqstack s,*p;
	int i;
	char ch,sh;
	initStack(&s);
	for(i=0;str[i]!='\0';i++)
	{
		switch(str[i])
		{
			case'(':
			case'':
			case'}':
			if(isEmpty(&s))
			{
				printf("
"); } else{ gettop(&s,&ch); if(Match(ch,str[i])) { pop(&s,&sh); } else { printf("
"); return; } } } } if(isEmpty(&s)) { printf("
"); } else printf("
"); } int main(){ char str[100], enter,ch; seqstack s; initStack(&s); printf(" :
"); scanf("%s",str); scanf("%c",&enter); brackMatch(str); printf("
"); }

피드백
  • 이 의외의 발견으로 볼 타입: 타입 이름이 'Bool'이면 컴파일러도 볼 타입으로 식별할 수 있다.선배님이 쓰신 거 참고로
  • 함부로 생각하지 말고 많이 생각하고 부지런히 해라.
  • 좋은 웹페이지 즐겨찾기