|
发表于 2017-7-5 13:59:27
|
显示全部楼层
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #define MAXSIZE 128
- typedef struct
- {
- char *base, *top;
- int capacity;
- } Stack;
- int InitStack(Stack *pstack)
- {
- pstack -> base = pstack -> top = (char*)malloc(sizeof(char) * MAXSIZE);
- if(!pstack -> base)
- return 0;
- pstack -> capacity = MAXSIZE;
- return 1;
- }
- int Push(Stack *pstack, char ch)
- {
- if(pstack -> top - pstack -> base >= pstack -> capacity)
- {
- pstack -> base = (char*)realloc(pstack -> base, (pstack -> capacity + 10) * sizeof(char));
- pstack -> top = pstack -> base + pstack -> capacity;
- pstack -> capacity += 10;
- }
- *(pstack -> top++) = ch;
- }
- void Pop(Stack *pstack, char *ch)
- {
- *ch = *(--pstack -> top);
- }
- int Empty(Stack *pstack)
- {
- return(pstack -> top - pstack -> base == 0);
- }
- int main()
- {
- Stack mStack;
- char buffer[MAXSIZE];
- int i, len;
- InitStack(&mStack);
- gets(buffer);
- len = strlen(buffer);
- for(i = 0; i < len; i++)
- {
- /*if(buffer[i] == '(')
- {
- if(i + 1 < len && buffer[i + 1] == ')')
- {
- i += 1;
- continue;
- }
- }
- else if(buffer[i] == '[')
- {
- if(i + 1 < len && buffer[i + 1] == ']')
- {
- i += 1;
- continue;
- }
- }*/
- if(buffer[i] == '(' || buffer[i] == '[' || buffer[i] == '{' || buffer[i] == '<')
- Push(&mStack, buffer[i]);
- else if(buffer[i] == ')' || buffer[i] == ']' || bufffer[i] == '}' || buffer[i] == '>')
- {
- char temp;
- Pop(&mStack, &temp);
- if((temp == '(' && buffer[i] == ')') || (temp == '[' && buffer[i] == ']') ||
- (temp == '{' && bufffer[i] == '}') || (temp == '<' && buffer[i] == '>'))
- continue;
- else {
- printf("isn't matched.\n");
- return 0;
- }
- }
- }
- if(Empty(&mStack))
- printf("matched.\n");
- else
- printf("isn't matched.\n");
- return 0;
- }
复制代码 |
|