利用递归函数逆序一个栈(C语言实现)
来源:互联网 发布:pdf转换word软件 编辑:程序博客网 时间:2024/05/17 08:43
利用递归函数将一个栈逆序,不能申请新的数据结构。
参考了常用解法,即两个递归函数嵌套使用,第一个递归函数用于获取栈的栈底元素,另一个递归函数用于逆序这个栈。
代码如下:
int getBottomElement(element *data){int result=pop(data);//弹出一个元素if(isEmpty(data)==1)return result;else{int last=getBottomElement(data);printf("getBottomElement函数被调用\n");push(result,data);return last;}}void reverseStack(element *data){if(isEmpty(data)==1)return;printf("reverse函数被调用\n");int i=getBottomElement(data);reverseStack(data);//每一层调用时这个data的变量值都是上一层取出栈底元素之后的值,所以这个栈再每一次递归中就会减少一个元素,直至空栈push(i,data);}void main(){ int i=0; int value=0; element stack; stack=init(); for(i=0;i<MAX_STACK_SIZE;i++) { printf("please input value to push into stack:\n"); scanf("%d",&value); push(value,&stack); } reverseStack(&stack); print(&stack);}
这个解法充分利用了递归函数的特点,将递归函数的函数栈作为另一个数据结构用于逆序排列。
递归函数类似于一个循环处理的过程,递归结束的条件非常重要,同时递归是从最里面的一层函数调用层层向上返回。
0 0
- 利用递归函数逆序一个栈(C语言实现)
- 利用函数递归逆序输出一个字符串
- 【C语言】写一个函数,实现字符串内单词逆序
- 【C语言】递归实现栈的逆序及排序
- C语言 逆序输出单链表(递归)
- 【C语言】编写一个函数reverse_string(char * string)(递归实现
- c语言实现内存逆序查找函数
- 字符串的逆序递归实现 C语言实现
- C语言-使用递归函数求正序,逆序,阶乘.
- 递归逆序打印单链表(c实现)
- 【源码】将一个整数的每位数分解并按逆序放入一个数组中(用递归算法)(C语言实现)
- C语言习题5.19--递归方法实现逆序
- Problem A: C语言习题5.19--递归方法实现逆序
- C语言OJ项目参考(2968)递归方法实现逆序
- C语言简单递归实现字符串逆序输出
- oj 2968: C语言习题5.20--递归方法实现逆序
- c语言利用递归实现二分查找
- 【c语言】 编写一个函数reverse_string(char * string)(递归实现)
- ROS探索总结(一)——ROS简介
- 【hdu 3861】The King’s Problem(Tarjan缩点+匈牙利算法)
- python解析代理
- 疯狂H5笔记 - 变形与动画相关属性
- 11.9 模拟题
- 利用递归函数逆序一个栈(C语言实现)
- 关于字符串gets()和scanf("%s")和getchar()的用法
- Android 之Mac studio查看SHA1和MD5
- 跟我一起读postgresql源码(二)——Parser(查询分析模块)
- JZOJ 4867 【NOIP2016提高A组集训第8场11.5】心理学概论
- Oracle ERP 常用查询:SLA详解
- C++ String类的实现
- 栈和队列(7)-- 生成窗口最大值数组
- noip2015day1 T1神奇的幻方