递归 递归的定义 递归程序的设计方法课件_第1页
递归 递归的定义 递归程序的设计方法课件_第2页
递归 递归的定义 递归程序的设计方法课件_第3页
递归 递归的定义 递归程序的设计方法课件_第4页
递归 递归的定义 递归程序的设计方法课件_第5页
已阅读5页,还剩196页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论