数据结构 第三节.ppt

  1. 1、本文档共229页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linked queue class member function definition (c++) Linked queue class member function definition (c++) Linked queue class member function definition (c++) Linked queue class member function definition (c++) Linked queue class member function definition (c++) (3) Application of queue Fibonacci sequence three-track problem 例1: k阶斐波那契序列(c language) 试利用循环队列编写求k阶斐波那契序列中前n+1项(f0, f1 , f2 ,… fn )的算法,要求满足fn ≤max而fn+1 max ,其中max为某个约定的常数。(注意本题所用循环队列的容量仅为k,则在算法执行结束时,留在循环队列中的元素应是k阶斐波那契序列中的最后k项fn-k+1 ,… fn ) . f0=0 , f1=0 , …, fk-2=0 , fk-1=1, fn = fn-1 + fn-2 +…+ fn-k (n=k,k+1,…) fi = fi-1 + fi-2 +…+ fi-k fi+1 = fi + fi-1 + fi-2 +…+ fi-k+1 两式相减得: fi+1 = 2*fi - fi-k Fibonacci sequence of k order The Fibonacci Number that are defined recursively as below: f0=0 , f1=0 , …, fk-2=0 , fk-1=1, fn = fn-1 + fn-2 +…+ fn-k (n=k,k+1,…) Please write a program that lists n+1 items of Fibonacci Number of k order(f0, f1 , f2 ,… fn ) using circular queue,satisfying that fn ≤max and fn+1 max ,where max is a given constant(Note the capacity of the circular queue is k, the numbers left in the circular queue after running the program is the last k numbers fn-k+1 ,… fn ) . fi = fi-1 + fi-2 +…+ fi-k fi+1 = fi + fi-1 + fi-2 +…+ fi-k+1 Do subtraction: fi+1 = 2*fi - fi-k 方法一 Method1 Void fb(int k;int max) capacity of queue is k { for(i=0;i=k-2;i++) {f[i]=0; cq.elem[i]=0;} cq.elem[k-1]=1; cq.rear=k-1; n=k; while(cq.elem[cq. rear]max) {f[n]=0; for(j=0;jk;j++) f[n]=f[n]+ cq.elem[j]; cq.rear=(cq.rear +1) % k; cq.elem[cq.rear]=f[n]; n++; } if(cq.elem[cq.rear]max) n=n-2; else n=n-1; if (max==1) {n=k;f[k]=1;} } method2 Void fb(int k;int;max) { for(i=0;i=k-2;i++) {f[i]=0; cq.elem[i]=0;} cq.elem[k-1]= cq.elem[k]= 1; cq.rear=k; n=k+1; f[k-1]=f[k]=1; while(cq.elem[cq. rear]max) {j= (cq. rear+1) % (k+1); f[n]= cq.elem[cq. rear]*2- cq.elem[j]; cq.elem[j

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档