地址

#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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容