地址
#include<stdio.h>
#define MAXSIZE 100
typedef int SElemType;
typedef int Status;
#define OVERFLOW -1
#define OK 1
#define ERROR 0
typedef struct
{
SElemType *base;
SElemType *top;
int stacksize;
}SqStack;
Status InitStack( SqStack &S )
{
S.base =new SElemType[MAXSIZE];
if( !S.base ) return OVERFLOW;
S.top = S.base;
S.stacksize = MAXSIZE;
return OK;
}
bool StackEmpty( SqStack S )
{
if(S.top == S.base) return true;
else return false;
}
int StackLength( SqStack S )
{
return S.top-S.base;
}
Status ClearStack( SqStack S )
{
if( S.base ) S.top = S.base;
return OK;
}
Status DestroyStack( SqStack &S )
{
if( S.base )
{
delete S.base ;
S.stacksize = 0;
S.base = S.top = NULL;
}
return OK;
}
Status Push( SqStack &S, SElemType e)
{
if( S.top - S.base== S.stacksize ) // 栈满
return ERROR;
*S.top++=e;
return OK;
}
Status Pop( SqStack &S, SElemType &e)
{
if( S.top == S.base ) // 栈空
return ERROR;
e= *--S.top;
return OK;
}
Status GetTop( SqStack S, SElemType &e)
{
if( S.top == S.base ) return ERROR; // 栈空
e = *( S.top-1 );
return OK;
}
int main()
{
int N;
char str[MAXSIZE];
scanf("%d",&N);
scanf("%s",&str);
SqStack s;
InitStack(s);
for(int i=0,j=1,k;i<N+N;i++)
{
if(str[i]=='(')
{
Push(s,j++);
}
else
{
Pop(s,k);
printf("%d ",k);
}
}
return 0;
}
网友评论