标签:文件包含 std 题目 stack pre col 包含 ret 相关
题目:一个栈依次压入1,2,3,4,5,那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其它数据结构。
1 //仅用递归函数和栈操作逆序一个栈 2 #include <stdio.h> 3 #include "stack.h" //该头文件包含栈操作的原型声明等相关信息 4 5 SqStack stack; 6 7 //获取栈底元素并删除 8 int getAndRemoveLastElement(SqStack *stack) 9 { 10 int result, last; 11 12 result = Pop(stack); 13 if(EmptyStack(*stack)) //栈空,则返回栈底元素 14 { 15 return result; 16 } 17 else 18 { 19 last = getAndRemoveLastElement(stack); 20 Push(stack, result); //将先前弹出的元素重新压入栈中,此时栈的第一个元素被第二个元素覆盖,相当于删除了栈底元素 21 return last; //栈的第一个元素被返回 22 } 23 } 24 25 //逆序栈 26 void reverse(SqStack *stack) 27 { 28 if(EmptyStack(*stack)) 29 { 30 return ; 31 } 32 int i = getAndRemoveLastElement(stack); //获取栈底元素并将其从栈中删除 33 reverse(stack); //递归调用reverse,此时的栈是被删除了栈底元素的栈 34 Push(stack, i); //待栈为空,则将获得的栈底元素压入栈中 35 }
标签:文件包含 std 题目 stack pre col 包含 ret 相关
原文地址:https://www.cnblogs.com/latup/p/8921497.html