欢迎来到天天文库
浏览记录
ID:52549388
大小:137.00 KB
页数:9页
时间:2020-04-10
《设有两个按元素递增的有序表A和B,设计一个算法将A和B.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、练习1:设有两个按元素递增的有序表A和B,设计一个算法将A和B的全部元素合并为一个按元素递增表C。voidMerge(SqListA,SqListB,SqList&C)练习2:设有一线性表按顺序存储,且每个元素互不相等,设计把所有奇数移到所有偶数前边的算法。线性表描述为:constintMAXSIZE=顺序表容量;typedefstruct{ElemTypedata[MAXSIZE];intlen;//线性表中实际元素个数}SqList;10/8/2021voidMerge(SqListA,SqListB,SqList&C){//将有序表A,B合并为有序表Cinti=0,j=0,
2、k=0;while(i3、ypetemp;while(i<=j){while(A.data[i]%2==0)i++;while(A.data[j]%2==1)j--;if(i4、mTypey){inti,k=0;for(i=0;i=x&&A.data[i]<=y)k++;elseA.data[i-k]=A.data[i];}}10/8/2021作业:设单链表定义为:typedefstructnode{ElemTypedata;structnode*next;//线性表中实际元素个数}SLink;1、设计一个算法,通过一趟遍历求单链表中元素最大的结点。2、设ha和hb分别是两个带头结点的非递减有序单链表的表头指针,试设计一个算法,将这两个有序链表合并成一个非递减有序单链表。要求结果链表仍使用原来两个链表的存5、储空间,不另外占用其他的存储空间。表中允许有重复的数据。10/8/20211:SLink*MaxNode(SLink*sq){SLink*p=sq->next,*q=p;while(p!=NULL){if(p->data>q->data)q=p;p=p->next;}returnq;}10/8/20212:SLink*Merge(SLink*ha,SLink*hb){SLink*pa=ha->next,*pb=hb->next,*hc,*tc;hc=pa;hc->next=NULL;tc=hc;while(pa!=NULL&&pb!=NULL){if(pa->datad6、ata){tc->next=pa;tc=pa;pa=pa->next;}elseif(pa->data>pb->data){tc->next=pb;tc=pb;pb=pb->next;}else{tc->next=pa;tc=pa;pa=pa->next;tc->next=pb;tc=pb;pb=pb->next;}}tc->next=NULL;if(pa!=NULL)tc->next=pa;if(pb!=NULL)tc->next=pb;returnhc;}10/8/2021作业:设多项式单链表结点定义为:typedefstructnode{floatcoef;intexpn;7、structnode*next;}PolyNode;设计一个算法求多项式的导数。10/8/2021voidCompPoly(PolyNode*sq){PolyNode*pre=sq,*p=sq->next,*q;while(p){if(p->expn==0){q=p;pre->next=p->next;p=p->next;free(q);}else{p->coef*=p->expn;p->expn--;pre=p;p=p->next;}}}10/8/2021
3、ypetemp;while(i<=j){while(A.data[i]%2==0)i++;while(A.data[j]%2==1)j--;if(i4、mTypey){inti,k=0;for(i=0;i=x&&A.data[i]<=y)k++;elseA.data[i-k]=A.data[i];}}10/8/2021作业:设单链表定义为:typedefstructnode{ElemTypedata;structnode*next;//线性表中实际元素个数}SLink;1、设计一个算法,通过一趟遍历求单链表中元素最大的结点。2、设ha和hb分别是两个带头结点的非递减有序单链表的表头指针,试设计一个算法,将这两个有序链表合并成一个非递减有序单链表。要求结果链表仍使用原来两个链表的存5、储空间,不另外占用其他的存储空间。表中允许有重复的数据。10/8/20211:SLink*MaxNode(SLink*sq){SLink*p=sq->next,*q=p;while(p!=NULL){if(p->data>q->data)q=p;p=p->next;}returnq;}10/8/20212:SLink*Merge(SLink*ha,SLink*hb){SLink*pa=ha->next,*pb=hb->next,*hc,*tc;hc=pa;hc->next=NULL;tc=hc;while(pa!=NULL&&pb!=NULL){if(pa->datad6、ata){tc->next=pa;tc=pa;pa=pa->next;}elseif(pa->data>pb->data){tc->next=pb;tc=pb;pb=pb->next;}else{tc->next=pa;tc=pa;pa=pa->next;tc->next=pb;tc=pb;pb=pb->next;}}tc->next=NULL;if(pa!=NULL)tc->next=pa;if(pb!=NULL)tc->next=pb;returnhc;}10/8/2021作业:设多项式单链表结点定义为:typedefstructnode{floatcoef;intexpn;7、structnode*next;}PolyNode;设计一个算法求多项式的导数。10/8/2021voidCompPoly(PolyNode*sq){PolyNode*pre=sq,*p=sq->next,*q;while(p){if(p->expn==0){q=p;pre->next=p->next;p=p->next;free(q);}else{p->coef*=p->expn;p->expn--;pre=p;p=p->next;}}}10/8/2021
4、mTypey){inti,k=0;for(i=0;i=x&&A.data[i]<=y)k++;elseA.data[i-k]=A.data[i];}}10/8/2021作业:设单链表定义为:typedefstructnode{ElemTypedata;structnode*next;//线性表中实际元素个数}SLink;1、设计一个算法,通过一趟遍历求单链表中元素最大的结点。2、设ha和hb分别是两个带头结点的非递减有序单链表的表头指针,试设计一个算法,将这两个有序链表合并成一个非递减有序单链表。要求结果链表仍使用原来两个链表的存
5、储空间,不另外占用其他的存储空间。表中允许有重复的数据。10/8/20211:SLink*MaxNode(SLink*sq){SLink*p=sq->next,*q=p;while(p!=NULL){if(p->data>q->data)q=p;p=p->next;}returnq;}10/8/20212:SLink*Merge(SLink*ha,SLink*hb){SLink*pa=ha->next,*pb=hb->next,*hc,*tc;hc=pa;hc->next=NULL;tc=hc;while(pa!=NULL&&pb!=NULL){if(pa->datad
6、ata){tc->next=pa;tc=pa;pa=pa->next;}elseif(pa->data>pb->data){tc->next=pb;tc=pb;pb=pb->next;}else{tc->next=pa;tc=pa;pa=pa->next;tc->next=pb;tc=pb;pb=pb->next;}}tc->next=NULL;if(pa!=NULL)tc->next=pa;if(pb!=NULL)tc->next=pb;returnhc;}10/8/2021作业:设多项式单链表结点定义为:typedefstructnode{floatcoef;intexpn;
7、structnode*next;}PolyNode;设计一个算法求多项式的导数。10/8/2021voidCompPoly(PolyNode*sq){PolyNode*pre=sq,*p=sq->next,*q;while(p){if(p->expn==0){q=p;pre->next=p->next;p=p->next;free(q);}else{p->coef*=p->expn;p->expn--;pre=p;p=p->next;}}}10/8/2021
此文档下载收益归作者所有