我是포포포 가림 2021-04-14 22:26 采纳率: 60%
浏览 43
已采纳

用堆栈翻转的例子reverse string gnirts esrever

详细解释的过程

reverse string gnirts esrever

  • 写回答

4条回答 默认 最新

  • 毛惜时 2021-04-14 22:30
    关注

    每行加了注释 

    #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);
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大
  • ¥15 Revit2020下载问题
  • ¥15 使用EMD去噪处理RML2016数据集时候的原理
  • ¥15 神经网络预测均方误差很小 但是图像上看着差别太大
  • ¥15 单片机无法进入HAL_TIM_PWM_PulseFinishedCallback回调函数
  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 seatunnel 怎么配置Elasticsearch