我是포포포 가림 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条)

报告相同问题?

悬赏问题

  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 关于大棚监测的pcb板设计
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器
  • ¥15 如何用Labview在myRIO上做LCD显示?(语言-开发语言)
  • ¥15 Vue3地图和异步函数使用