利用栈来实现对字符串的逆置

时间:2025-04-04 13:11:54
#include <> #include <> #define MAXSIZE 20 //定义一个顺序栈 typedef struct Node{ char str[MAXSIZE]; int top; }SeqStack; //初始化 void InitStack(SeqStack &S) { S.top=-1; } //判断顺序栈是否为空 int StackEmpty(SeqStack &S) { if(S.top==-1) return true; else return false; } //入栈 int Push(SeqStack &S,char x) { if(S.top==MAXSIZE-1) return false; else { S.top++; S.str[S.top]=x; return true; } } //出栈 (在这里我们将栈顶元素的值存在x中,并将这个值返回) char Pop(SeqStack &S) { char x; if(S.top==-1) printf("栈空"); else { x=S.str[S.top]; S.top--; return x; } } int main(){ char str[MAXSIZE]; SeqStack S; int i; printf("逆置前的字符串为: \n"); gets(str);//输入一个字符串 InitStack(S); for (i=0;str[i]; i++) { Push(S, str[i]);//将字符数组中元素入栈 } printf("逆置后的字符串为: \n"); while (!StackEmpty(S)) { putchar(Pop(S));//输出调用Pop函数返回的栈顶元素(存在x中) } printf("\n"); return 0; }