筱刘丶 @ 2020-09-11 17:17:05
#include<stdio.h>
#include<stdlib.h>
struct stack{
char *top;
char *base;
int sizestack;
};
void initstack(struct stack &s){
s.base=(char *)malloc(100*sizeof(char));
if(!s.base) exit(-1);
s.top=s.base;
s.sizestack=100;
}
void push(struct stack &s,char c){
if(s.top-s.base==s.sizestack){
s.base=(char *)realloc(s.base,(s.sizestack+10)*sizeof(char));
s.top=s.base+s.sizestack;
s.sizestack+=10;
}
*s.top++=c;
}
int pop(struct stack &s,char &e){
if(s.top==s.base) return 0;
e=*--s.top;
}
int gettop(struct stack &s){
if(s.top==s.base) return 0;
return 1;
}
int main(){
char c[100];
int i;
for(i=1;i<=100;i++){
if((c[i]=getchar())=='\n')
break;
}
for(int j=i;j>=1;j--){
if(c[j])
for(int k=j;k>=1;k--){
if((c[j]-c[k])==1){
printf("%c%c",c[k],c[j]);
c[k]=c[j]=0;
break;
}
}
}
struct stack s;
initstack(s);
for(int j=i-1;j>=1;j--){
if(c[j])
push(s,c[j]);
}
char a;
while(gettop(s)){
pop(s,a);
if(a==40)
printf("%c%c",a,a+1);
if(a==91)
printf("%c%c",a,a+2);
if(a==93)
printf("%c%c",a-2,a);
if(a==41)
printf("%c%c",a-1,a);
}
return 0;
}
by tuxiaobei @ 2020-09-11 17:24:17
@筱刘丶 请选择 C++
语言提交
by Smile_Cindy @ 2020-09-11 18:01:08
@筱刘丶 语言选C++