#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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 写在前面的话:在这里我们要学习整理的是协议栈和网卡探索的读书笔记,其中的TCP/IP,三次握手,SYN,ACK,A...
- 姓名:朱小鹏 学号:16010130023 转载: http://blog.sina.com.cn/s/blog...
- 栈 Stack 先进后出 LIFO(last in first out) 详细可见wiki https://en....