详细解释的过程
reverse string gnirts esrever
每行加了注释
#include<stdio.h> //标准输出
#include<string.h> //字符串处理
#include<stdlib.h> //标准库
#define StackSize 100 //假定预分配的栈空间最多为100个元素
//定义栈的结构体
typedef struct
{
char data[StackSize];// 存储元素的数组
int top; //栈顶指针
}SeqStack;
//初始化栈
void Init(SeqStack *&s)
{
s=(SeqStack *)malloc(sizeof(SeqStack)); //分配内存
s->top=-1; //初始化栈顶指针
}
//入栈
void push(SeqStack *s,char e)
{
if( s->top == StackSize )
{
printf("栈满\n");
}
else
{
//移动栈顶指针
s->top++;
//将数据加入栈中
s->data[s->top]=e;
}
}
//出栈
char pop(SeqStack *s)
{
if( s->top == -1 )
{
//栈为空
printf("栈空\n");
return '\0';
}
//获取数据,并将数据移出栈
return (s->data[s->top--]);
}
//反转字符串
void reverse(char str[])
{
//定义变量
SeqStack *stack;
//定义变量,flag标志着字符串是否对称,1:对称,0:不对称
int i=0,length;
//获取字符串长度
length = strlen(str);
//初始化栈
Init(stack);
//遍历字符串,将字符入栈
for( i=0; i<length; i++)
{
//入栈
push(stack,str[i]);
}
printf("反转后的字符串:");
//利用出栈反转字符串
for( i=0; i<length; i++)
{
printf("%c",pop(stack));
}
printf("\n");
}
void main()
{
//定义变量
char str[StackSize];
printf("请输入要反转的字符串:");
//获取用户输入的字符串
gets(str);
//反转字符串
reverse(str);
}
请把代码发出来看看,便于分析原因。
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y