데이터 구조 -- 괄호 일치 검사

2006 단어
 
  
//                
//     C-Free 5.0 
#include
#include
#define MAXSIZE 100
typedef struct
{
	int *base;  //     
	int *top;   //     
	int stacksize;
}SqStack;

void InitStack(SqStack*s)
{
	s->base = (int *)malloc(MAXSIZE*sizeof(int));//        100*sizeof(int) 
	if (!s->base)    
	{
		return;   //  (    ) 
	}
	s->top = s->base;     
	s->stacksize = MAXSIZE; 
}
void push(SqStack *s, char x)  //     
{
	if (s->top-s->base==s->stacksize)   //   
	{
		return;
	}
	*s->top++ = x;  
}
char GetTop(SqStack *s)   //       
{
	if (s->top != s->base)
	{
		return*(s->top-1);      
	}

}
char pop(SqStack *s)    //     
{
	if (s->top == s->base)
	{
		return' '; 
	}
	char e;
	e = *--s->top;
	return e;
}
int Maching()
{
	SqStack ss;     //        
	SqStack *s = &ss;  //         
	InitStack(s);   //     
	int flag = 1;
	printf("     ");
	char ch = getchar();
	while (ch != '#'&&flag)
	{
		switch(ch)
		{
			//char aa;
			//char bb;
			case '[':
			case '(':
					push(s, ch);  //    
					break;
				case ')':
				    //aa=GetTop(s);
					if (!(s->top == s->base) && GetTop(s) == '(')
					{
						pop(s);  //   
					}
					else
					{
						flag = 0;
					}
					break;
				case ']':
				    //bb=GetTop(s);
					if (!(s->top == s->base) &&GetTop(s) == '[')
					{
						pop(s);  //   

					}
					else
					{
						flag = 0;
					}
					break;
		}
		ch = getchar();	
	}
	if (s->top == s->base)
		{
			return 1;                    
		}
		else
		{
			return 0;
		}
}

void main()
{
	int n; 
	n=Maching();
	if(n)
	{
		printf("    
"); } else { printf("
"); } }

좋은 웹페이지 즐겨찾기