-
一、括号匹配问题
- 说明:遇到左括号时,入栈;遇到右括号时,与栈顶元素匹配。
#include<stdio.h>
#include<stdlib.h>
#include"stack.h"
#include<assert.h>
#define INIT_SIZE 10
typedef struct stack
{
int* base;
int top;
int stacksize;
}Stack, * PStack;
//初始化
void InitStack(PStack ps)
{
assert(ps != NULL);
if (ps == NULL)
{
return;
}
ps->base = (int*)malloc(INIT_SIZE * sizeof(int));
assert(ps->base != NULL);
ps->top = 0;//相当于空表
ps->stacksize = INIT_SIZE;
}
//判满
static bool IsFull(PStack ps)//没有满的概念,一满就扩容
{
assert(ps != NULL);
if (ps == NULL)
{
return false;
}
return ps->top == ps->stacksize;
}
//扩容
static void Inc(PStack ps)
{
assert(ps != NULL);
if (ps == NULL)
{
return;
}
ps->stacksize *= 2;//常用两倍或1