版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、递归 递归的定义 递归程序的设计方法 递归运行栈与递归树 递归的执行过程 递归程序的效率分析 递归算法到非递归算法的转换 设计举例递归的定义递归函数: 直接或间接调用自己的函数1. 递归定义的数学函数:阶乘函数: 2阶Fibonaci数列: 2. 具有递归特性的数据结构:单链表 a1a2anL字符串 S=“a1 a2 an”树 2. 具有递归特性的数据结构:Root广义表 GL = (a1, a2, a3, , an )二叉树 Root表头表尾T1T2TmTLTR递归的种类Function Sort().if(condition) call Sort().end(1) 直接递归(2) 间接递归
2、Function Sort().if(condition) call Search ().endFunction Search().if(condition) call Sort ().end递归 递归的定义 递归程序的设计方法 递归运行栈与递归树 递归的执行过程 递归程序的效率分析 递归算法到非递归算法的转换 设计举例分治法(Divide and Conquer)将问题的实例划分为同一个问题的几个较小的实例,最好拥有同样的规模。对这些较小的实例求解(一般使用递归方法,但在问题规模足够小时,有时也会使用一些其他方法。如果有必要,合并这些较小问题的解,以得到原始问题的解。 分治法(Divide
3、and Conquer)原始问题的规模是n子问题1的规模是n/2子问题2的规模是n/2子问题1的解子问题2的解原始问题的解分治法(Divide-and-Conquer)分治法的典型应用 二叉树的遍历及应用 广义表的递归算法 折半查找 快速排序 合并排序减治法(Decrease-and-Conquer)Plutarch says that Sertorius, in order to teach his soldiers that perseverance and wit are better than brute force, had two horse brought before them
4、, and set two men to pull out their tails. One of the man was a burly Hercules, who tugged and tugged, but all to no purpose; the other was a sharp, weasel-faced tailor, who plucked one hair at a time, amidst roars of larghter, and soon let the tail quite bare. -E. Cobham Brewer, Dictionary of Phras
5、e and Fable, 1898 减治法(Decrease-and-Conquer)减治法利用了一种关系:一个问题给定实例的解和同样问题较小实例的解之间的关系。一旦建立了这样一种关系,就可以自顶至下(递归地),也可以自底至上(非递归地)来运用减治法有3种主要的变种: 减去一个常量 减去一个常数因子 减去的规模是可变的原始问题的规模是n子问题的规模是n-1子问题的解原始问题的解减治法(Decrease-and-Conquer)递归程序书写方式Function (parameter list)if(initial condition) return (initial value)else ret
6、urn (parameter exchange);end初始条件参数表参数交换例:求n个数的阶乘int fact(int n) if(n=0) return (1); else return (n*fact(n-1);n!=n*(n-1)!初始条件切忌想得太深太远!函数调用过程main()调 fun()结束保存:返回地址当前现场fun()返回恢复:主调程序现场返回地址函数调用过程调用前, 系统完成:(1)将实参,返回地址等传递给被调用函数(2)为被调用函数的局部变量分配存储区(3)将控制转移到被调用函数的入口调用后, 系统完成:(1) 保存被调用函数的计算结果(2) 释放被调用函数的数据区(3
7、) 依照被调用函数保存的返回地址将控制转移到调用函数int first(int s,int t);int second(int d);int main() int m,n; . first(m,n); 1:.int first(int s,int t) int i; . second(i); 2:.int second(int d) int x,y; .int first(int s,int t);int second(int d);int main() int m,n; . first(m,n); 1:.int first(int s,int t) int i; . second(i); 2
8、:.int second(int d) int x,y; .栈顶函数调用过程int first(int s,int t);int second(int d);int main() int m,n; . first(m,n); 1:.int first(int s,int t) int i; . second(i); 2:.int second(int d) int x,y; .栈顶函数调用过程int first(int s,int t);int second(int d);int main() int m,n; . first(m,n); 1:.int first(int s,int t) i
9、nt i; . second(i); 2:.int second(int d) int x,y; .栈顶函数调用过程int first(int s,int t);int second(int d);int main() int m,n; . first(m,n); 1:.int first(int s,int t) int i; . second(i); 2:.int second(int d) int x,y; .栈顶函数调用过程int first(int s,int t);int second(int d);int main() int m,n; . first(m,n); 1:.int
10、first(int s,int t) int i; . second(i); 2:.int second(int d) int x,y; .栈顶函数调用过程int first(int s,int t);int second(int d);int main() int m,n; . first(m,n); 1:.int first(int s,int t) int i; . second(i); 2:.int second(int d) int x,y; .栈顶递归工作栈与递归树MMABCDDDDMAMABMAMACMACDMACMAMMDMDDMDDDMDDMDM时间堆栈数据递归 递归的定义
11、递归程序的设计方法 递归运行栈与递归树 递归的执行过程 递归程序的效率分析 递归算法到非递归算法的转换 设计举例求n个数的阶乘int fact(int n) if(n=0) return (1); else return (n*fact(n-1);n!=n*(n-1)!求n个数的阶乘Fact(4)=4 Fact(3)Fact(3)=3 Fact(2)Fact(2)=2 Fact(1)Fact(1)=1 Fact(0)Fact(0)=1Fact(1)= 1 1 = 1Fact(2)= 2 1 = 2Fact(3)= 3 2 = 6Fact(4)= 4 6 = 24递推回归Hanoi塔问题规则:(
12、1) 每次只能移动一个圆盘(2) 圆盘可以插在X,Y和Z中的任一塔座上(3) 任何时刻不可将较大圆盘压在较小圆盘之上void hanoi(int n, char x, char y, char z) /将塔座x上由小到大且自上而下编号为1至n的n个圆盘按规 / 则搬到塔座z上, y可用作辅助塔座 if(n=1) move(x,1,z); /将编号为1的圆盘从x搬到z else hanoi(n-1,x,z,y); /将x上编号为1至n-1的圆盘移到y, /z作辅助塔 move(x,n,z); /将编号为n的圆盘从x移到z hanoi(n-1,y,x,z); /将y上编号为1至n-1的圆盘移到z,
13、 /x作辅助塔 Hanoi塔问题Hanoi(3,a,b,c)Hanoi(2,a,c,b)move (a,3,c)Hanoi(2,b,a,c)01Hanoi(1,a,b,c)move(a,2,b)Hanoi(1,c,a,b)2Hanoi(3,a,b,c)Hanoi(2,a,c,b)move (a,3,c)Hanoi(2,b,a,c)013move(a,1,c)Hanoi(3,a,b,c)Hanoi(2,a,c,b)move (a,3,c)Hanoi(2,b,a,c)Hanoi(1,a,b,c)move(a,2,b)Hanoi(1,c,a,b)012move(c,1,b)3move(a,1,c)H
14、anoi(3,a,b,c)Hanoi(2,a,c,b)move (a,3,c)Hanoi(2,b,a,c)Hanoi(1,a,b,c)move(a,2,b)Hanoi(1,c,a,b)012move(c,1,b)Hanoi(1,b,c,a)move(b,2,c)Hanoi(1,a,b,c)Hanoi(3,a,b,c)Hanoi(2,a,c,b)move (a,3,c)Hanoi(2,b,a,c)Hanoi(1,a,b,c)move(a,2,b)Hanoi(1,c,a,b)Hanoi(1,b,c,a)move(b,2,c)Hanoi(1,a,b,c)0123move(a,1,c)move(c,1
15、,b)move(b,1,a)move(a,1,c)void main (void) int n; unsigned char a,b,c; n=3; a=1; b=2; c=3; hanoi(n, a, b, c);0: . . .0 层void main (void) int n; unsigned char a,b,c; n=3; a=1; b=2; c=3; hanoi(n, a, b, c);0: . . .0 层void main (void) int n; unsigned char a,b,c; n=3; a=1; b=2; c=3; hanoi(n, a, b, c);0: .
16、 . .0 层void main (void) int n; unsigned char a,b,c; n=3; a=1; b=2; c=3; hanoi(n, a, b, c);0: . . .0 层void main (void) int n; unsigned char a,b,c; n=3; a=1; b=2; c=3; hanoi(n, a, b, c);0: . . .0 层0, 3, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y);
17、 move(x,n,z); hanoi(n-1,y,x,z); 8 9 1 层0, 3, a, b, c3, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 1 层0, 3, a, b, c3, a, b, c1 层0, 3, a, b, c3, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move
18、(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 1 层0, 3, a, b, c3, a, b, c2, a, c, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 1 层0, 3, a, b, c3, a, b, c2, a, c, b6, 2, a, c, bvoid hanoi(int n,
19、 char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, a, c, b6, 2, a, c, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, a,
20、c, b6, 2, a, c, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, a, c, b6, 2, a, c, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,
21、y,x,z); 8 9 2 层0, 3, a, b, c2, a, c, b1, a, b, c6, 2, a, c, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, a, c, b1, a, b, c6, 2, a, c, b6, 1, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n
22、=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, a, b, c6, 2, a, c, b6, 1, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, a, b, c6, 2, a, c, b6,
23、 1, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, a, b, ca, 1, c6, 2, a, c, b6, 1, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,
24、z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, a, b, c6, 2, a, c, b6, 1, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, a, c, ba, 2, b6, 2, a, c, bvoid hanoi(int n, char x, char y, char z)1 2 if(
25、n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, a, c, b1,c,a,b6, 2, a, c, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, a, c, b1,c,a,b6, 2, a, c, b
26、8, 1, c, a, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, c, a, b6, 2, a, c, b8, 1, c, a, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); h
27、anoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, c, a, b6, 2, a, c, b8, 1, c, a, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, c, a, bc, 1, b6, 2, a, c, b8, 1, c, a, bvoid hanoi(int n, char x, char y, char z
28、)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, c, a, bc, 1, b6, 2, a, c, b8, 1, c, a, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, c, a,
29、b6, 2, a, c, b8, 1, c, a, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, a, c, b6, 2, a, c, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z);
30、hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, a, c, b6, 2, a, c, bvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 1 层0, 3, a, b, c3, a, b, ca, 3, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 han
31、oi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 1 层0, 3, a, b, c3, a, b, c2, b, a, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 1 层0, 3, a, b, c3, a, b, c2, b, a, c8, 2, b, a, cvoid hanoi(int n, char x, char y, cha
32、r z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, b, a, c8, 2, b, a, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, b, a, c8, 2, b, a, cvoi
33、d hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, b, a, c8, 2, b, a, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3,
34、 a, b, c2, b, a, c1, b, c, a8, 2, b, a, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, b, a, c1, b, c, a8, 2, b, a, c6, 1, b, c, avoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4
35、else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, b, c, a8, 2, b, a, c6, 1, b, c, avoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, b, c, a8, 2, b, a, c6, 1, b, c, avoid hano
36、i(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 b, 1, a3 层0, 3, a, b, c1, b, c, a8, 2, b, a, c6, 1, b, c, avoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z)
37、; 8 9 3 层0, 3, a, b, c1, b, c, a8, 2, b, a, c6, 1, b, c, avoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层2, b, a, cb,2,c0, 3, a, b, c8, 2, b, a, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 e
38、lse5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 1,a,b,c2 层2, b, a, c0, 3, a, b, c8, 2, b, a, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 1,a,b,c2 层2, b, a, c0, 3, a, b, c8, 2, b, a, c8, 1, a, b, cvoid hano
39、i(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, a, b, c8, 2, b, a, c8, 1, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3
40、 层0, 3, a, b, c1, a, b, c8, 2, b, a, c8, 1, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 a, 1, c3 层0, 3, a, b, c1, a, b, c8, 2, b, a, c8, 1, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1
41、,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 3 层0, 3, a, b, c1, a, b, c8, 2, b, a, c8, 1, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, b, a, c8, 2, b, a, cvoid hanoi(int
42、n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 2 层0, 3, a, b, c2, b, a, c8, 2, b, a, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 1 层0, 3, a, b, c3, a
43、, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 1 层0, 3, a, b, c3, a, b, cvoid hanoi(int n, char x, char y, char z)1 2 if(n=1)3 move(x,1,z); 4 else5 hanoi(n-1,x,z,y); move(x,n,z); hanoi(n-1,y,x,z); 8 9 void main (v
44、oid) int n; unsigned char a,b,c; n=3; a=1; b=2; c=3; hanoi(n, a, b, c);0: . . .0 层思考题如果盘子个数为n,求最小移动次数F(n)?(1) n-1, XY (Z)F(n-1)次(2) 1, XY1次(3) n-1, YZ (X)F(n-1)次F(n)=2F(n-1)+1=2n-1=2(2F(n-2)+1) +1Hanoi塔的递归调用树nn-1n-1n-2n-2n-2n-2211211211211递归调用的次数:递归 递归的定义 递归程序的设计方法 递归运行栈与递归树 递归的执行过程 递归程序的效率分析 递归算法到非
45、递归算法的转换 设计举例Fibonaci数列long Fib(int n) if(n=0 | n=1) return n; /递归出口 else return Fib(n-1) + Fib(n-2); /递归调用Fibonaci数列Fib(5)Fib(4)Fib(3)Fib(2)Fib(2)Fib(1)Fib(1)Fib(0)Fib(3)Fib(2)Fib(1)Fib(1)Fib(0)递归调用的次数:Fib(1)Fib(0)Fibonaci数列long Fib2(int n) long oneBack, twoBack, current int i; if(n=0 | n=1) return
46、n; /递归出口 else oneBack=0; twoBack=1; for(i=2; inext); printf(p-data); return OK;/ InverseList_L 按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 1L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(L
47、inkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 1L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 1L按逆序打印单链表的元素a1a2p(1)a3a4a5Sta
48、tus InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 2p(2)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 2p(2)L按逆
49、序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 2p(2)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return O
50、K;/ InverseList_L 3p(2)p(3)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 3p(2)p(3)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint
51、(p-next); printf(p-data); return OK;/ InverseList_L 3p(2)p(3)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 4p(2)p(3)p(4)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点
52、的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 4p(2)p(3)p(4)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 4p(2)p(3)p(4)L按逆序打印单链表的元素a1a2p(1)a3a4a5
53、Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 5p(2)p(3)p(4)p(5)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ Inverse
54、List_L 5p(2)p(3)p(4)p(5)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 5p(2)p(3)p(4)p(5)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; Inverse
55、Print(p-next); printf(p-data); return OK;/ InverseList_L 6p(2)p(3)p(4)p(5)p(6)=NULLL按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 6p(2)p(3)p(4)p(5)p(6)=NULLL按逆序打印单链表的元素a1a2p(1)a3a4a5Status
56、InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 5p(2)p(3)p(4)p(5)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L
57、5p(2)p(3)p(4)p(5)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 4p(2)p(3)p(4)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-nex
58、t); printf(p-data); return OK;/ InverseList_L 4p(2)p(3)p(4)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 3p(2)p(3)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元
59、素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 3p(2)p(3)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 2p(2)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrin
60、t(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 2p(2)L按逆序打印单链表的元素a1a2p(1)a3a4a5Status InversePrint(LinkList p) /逆序打印不带头结点的单链表的元素 if(!p) return OK; InversePrint(p-next); printf(p-data); return OK;/ InverseList_L 1L按逆序打印单链表的元素a1a2p(1)a3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2030年中国低碳化学品行业发展潜力及投资前景规划研究报告
- 环境质量评论课程设计
- 机械制造扇形板课程设计
- 跨学科培训贯通课程设计
- 2024至2030年中国微电机减速器行业投资前景及策略咨询研究报告
- 2024年安全环保奖惩制度模版(二篇)
- 调光器细分市场深度研究报告
- 帆布鞋产业链招商引资的调研报告
- 光学测量技术研究行业经营分析报告
- 冰棍棒产业链招商引资的调研报告
- 设备维保和维保服务外包
- 2018年公安机关人民警察高级执法资格试题
- 电动汽车的电控系统
- 安全运维堡垒机部署方案
- 2024届江苏省苏州市立达中学数学七年级第二学期期末综合测试试题含解析
- 《生产成本控制技巧》课件
- 国开电大绩效与薪酬实务(河北)形考任务三参考答案
- 农田土地平整工程技术规程
- 2023年黑龙江事业单位公共基础知识真题及答案
- 化学高二-2022-2023学年北京市海淀区高二(上)期末化学试卷
- 急性左心衰课件
评论
0/150
提交评论