2019-01-17  本文已影响0人  点一下我的id

地址

#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;
}
上一篇下一篇

猜你喜欢

热点阅读