数据结构作业汇总.pdf
《数据结构作业汇总.pdf》由会员分享,可在线阅读,更多相关《数据结构作业汇总.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 作业:分别以顺序表和单链表为存储结构,为线性表类添加一个成员函数,实现线性表中 所有元素就地逆置。顺序表的就地逆置算法:template void SeqList:Reverse()for(int i=0;ilength/2;i+)int temp=datai;datai=datalength-i-1;datalength-i-1=temp;单链表的就地逆置算法:算法一:要修改每个结点的指针域,即把指向后继结点的指针改为指向前躯结点,现办法就是在扫描遍历过程中,对工作指针 P所指结点作指针域前指操作。(1)逆置后原来指向后继结点的指针被破坏,需要保留;(2)逆置需要将P的前躯结点地址填入后继
2、位置,为此需保存前躯结点地址;(3)全部逆置后,头结点的指针域应指向最后结点。template void LinkList:Reverse()p=first-next;pre=null;while(p)r=p-next;p-next=pre;pre=p;p=r;first-next=pre;具体实 需注意事项 算法二:利用头插法将单链表逆置。将原来表的头结点作为新链表的头结点,依次取原来 表中的结点插到新表的头结点之后。注意:后继结点会遭破坏,需暂存。void LinkList:Reverse()p=first-next;first-next=null;while(p)r=p-next;p-n
3、ext=first-next;first-next=p;p=r;作业:设计一个时间复杂度为 O(n)的算法,实现数组 An 中所有元素循环左移 k 个位置。算法一:将数组中的前k个元素存放到一个临时数组中,再将余下的n-k个元素左移k个位置,最后将前k个元素从临时数组复制到原来数组中的后 k个位置。时间复杂度 O(n);空间复杂度 O(k)算法二:先设计一个函数将数组向左循环移动一个位置,然后再调用这个函数 k次,显然,该算法的时间复杂度 O(n*k)算法三:将这个问题看做是把数组 ab转换成数组ba,(aTbT)T=ba Void converse(int A,int n,int k)Rev
4、erse(A,0,k-1);Reverse(A,k,n-1);Reverse(A,0,n-1);Void Reverse(int A,int from,int to)For(i=0;i(to-from+1)/2;i+)Afrom+iAto-i;作业:约瑟夫环问题描述:设有编号为1,2,n的n(n0)个人围坐成一个圈,每个人持有一个密码 m,从第1个 人开始报数,报到 m停止,报m的人出圈,如此下去,直到所有人全部出圈为止。当任意给 定n和m后,设计算法求n个人出圈的次序。要求:(1)分析问题,建立数据模型;(2)设计适合的存储结构;(3)设计相应算法;(4)分析算法时间和空间复杂度;(5)调试
5、算法,上机实现。解:(1)由约瑟夫环问题的求解过程可以把问题的输入(即n个人的编号)看成是一个线性序 列,每个人的编号看成是一个数据元素。因此,问题抽象的数据模型是“线性表”;(2)线性表有两种基本的存储结构顺序存储和链接存储;(3)A.用顺序存储结构实现约瑟夫问题 void Josephus(int a,int n,int m)/约瑟夫环初始化:for(int i=0;i1)/每出圈一次表长减 1 s=(s+m-1)%length;cout as;s为第m个人 for(int i=s+1;ilength;i+)ai-1=ai;删除第m个人 length-;coutdata=a0;rear=f
6、irst;for(int i=1;idata=ai;rear-next=s;rear=s;rear-next=first;/由删除操作输出出圈序列 Node*pre,*p,*q;int count=2;pre=first;p=first-next;while(pre!=p)if(count=m)coutdatanext;pre-next=p;delete q;count=1;else pre=p;p=p-next;count+;coutdataendl;delete p;delete pre;delete first;delete rear;时间复杂度 O(n*m);空间复杂度 O(n)作业:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 作业 汇总
限制150内