典型的用栈来解决问题 话不多说 直接上代码
勉强说容易遗忘的点就是如何以特殊字符结束字符串,算是很基本的东西,但是容易忘。
这里利用了栈结构先进后出的性质,直接反转字符串,再利用strcmp函数对比输入串和输出串即可。
#include
#include
#include
#define ERROR 0;
#define OK 1;
typedef struct Stack{
char *elements;
int top_index,max_size;
}Stack;
void init(Stack* s,int length){
s->elements=(char *)malloc(sizeof(char)*length);
s->max_size=length;
s->top_index=-1;
}
int push(Stack* s,char element){
if(s->top_index >= s->max_size-1){
return ERROR;
}
s->top_index++;
s->elements[s->top_index]=element;
return OK;
}
int pop(Stack* s){
if(s->top_index<0){
return ERROR;
}
s->top_index--;
return OK;
}
int top(Stack* s){
if(s->top_index==-1){
return ERROR;
}
else
{
return s->elements[s->top_index];
}
}
int main(){
char input[100]={'\0'};
char a;
int i=0;
Stack* s=(Stack *)malloc(sizeof(Stack));
while((a=getchar())!='@'){
input[i++]=a;
}
int length=(int)strlen(input);
init(s,length);
for(int k=0;k