涓ヨ敋鏁忕増鏁版嵁缁撴瀯璇惧悗涔犻绛旀-瀹屾暣鐗?- 鐧惧害鏂囧簱

萌小芽 分享 2025-5-18 下载文档

---

解:

void MergeList_L(LinkList &ha,LinkList &hb,LinkList &hc) { }

2.16 已知指针la和lb分别指向两个无头结点单链表中的首元结点。

----

LinkList pa,pb; pa=ha; pb=hb;

while(pa->next&&pb->next){ }

if(!pa->next){ } else{ }

hc=ha;

while(pa->next) pa=pa->next; pa->next=hb->next; hc=hb;

while(pb->next) pb=pb->next; pb->next=ha->next; pa=pa->next; pb=pb->next;

---

下列算法是从表la中删除自第i个元素起共len个元素后,将它们插入到表lb中第i个元素之前。试问此算法是否正确?若有错,请改正之。

Status DeleteAndInsertSub(LinkedList la,LinkedList lb,int i,int j,int len) { if(i<0||j<0||len<0) return INFEASIBLE; p=la; k=1;

while(knext; k++; } q=p;

while(k<=len){ q=q->next; k++; } s=lb; k=1;

while(knext; k++; } s->next=p; q->next=s->next; return OK;

} 解:

Status DeleteAndInsertSub(LinkList &la,LinkList i,int j,int len) { LinkList p,q,s,prev=NULL;

int k=1;

----

&lb,int ---

if(i<0||j<0||len<0) return INFEASIBLE; // 在la表中查找第i个结点 p=la;

while(p&&k

if(!p)return INFEASIBLE; // 在la表中查找第i+len-1个结点 q=p; k=1; while(q&&k

if(!q)return INFEASIBLE;

// 完成删除,注意,i=1的情况需要特殊处理 if(!prev) la=q->next; else prev->next=q->next;

// 将从la中删除的结点插入到lb中 if(j=1){

q->next=lb;

----

prev=p; p=p->next; k++;

q=p->next; k++;

---

}

}

lb=p;

else{ }

return OK;

s=lb; k=1; while(s&&k

if(!s)return INFEASIBLE; q->next=s->next; s->next=p; //完成插入

s=s->next; k++;

2.17 试写一算法,在无头结点的动态单链表上实现线性表操作Insert(L,i,b),并和在带头结点的动态单链表上实现相同操作的算法进行比较。

2.18试写一算法,实现线性表操作Delete(L,i),并和在带头结点的动态单链表上实现相同操作的算法进行比较。

2.19 已知线性表中的元素以值递增有序排列,并以单链表作存储结构。试写一高效的算法,删除表中所有值大于mink且小于maxk的元素(若表中存在这样的元素),同时释放被删结点空间,并分析你的

----


涓ヨ敋鏁忕増鏁版嵁缁撴瀯璇惧悗涔犻绛旀-瀹屾暣鐗?- 鐧惧害鏂囧簱.doc 将本文的Word文档下载到电脑
搜索更多关于: 涓ヨ敋鏁忕増鏁版嵁缁撴瀯璇惧悗涔犻绛旀-瀹屾暣鐗?- 鐧 的文档
相关推荐
相关阅读