详细解释的过程
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);
}