新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
將兩個遞增的有序鏈表La和Lb合并為一個遞增的有序鏈表Lc-創(chuàng)新互聯(lián)
題目:將兩個遞增的有序鏈表La和Lb合并為一個遞增的有序鏈表Lc。要求結(jié)果鏈表仍使用原來兩個鏈表的存儲空間,不另外占用其他的存儲空間,表中不允許有重復(fù)的數(shù)據(jù)
算法思想:假設(shè)待合并的鏈表為La和Lb,合井后的新表使用頭指針 Lc (Lc的表頭結(jié)點設(shè)為La的表頭結(jié)點)指向。pa和pb分別是鏈表La和Lb的工作指計,初始化為相應(yīng)鏈表的首元結(jié)點。從首元結(jié)點開始進行比較,當(dāng)兩個鏈表La和Lb均未到達表尾結(jié)點時,依次摘取其中較小者重新鏈接在Lc表的最后。如果兩個表中的元素相等,只摘取La表中的元素,刪除Lb表中的元素,這樣確保合并后的表中無重復(fù)的元素。當(dāng)一個表到達表尾結(jié)點為空時,將非空表的剩余元素直接鏈接在Lc表的最后,最后釋放鏈表Lb的頭結(jié)點。
void MergeList(LinkList& La, LinkList& Lb, LinkList& Lc)
{//將兩個遞增的有序鏈表La和Lb合并為一個遞增的有序鏈表Lc
LinkList pa, pb, pc, Lc,p;
pa = La->next;//pa是鏈表La的工作指針,初始化為首元結(jié)點
pb = Lb->next;//pb是鏈表Lb的工作指針,初始化為首元結(jié)點
Lc = La = pc;//用La的頭結(jié)點作為Lc的頭結(jié)點
while (pa && pb)
{if (pa->data< pb->data)
{//取較小者La中的元素,將pa鏈接在pc的后面,pa指針后移
pc->next = pa;
pc = pa;
pa = pa->next;
}
else if (pa->data >pb->data)
{/取較小者Lb中的元素,將pb鏈接在pc的后面,pb指針后移
pc->next = pb;
pc = pb;
pb = pb->next;
}
else
{//相等時取La中的元素,刪除Lb中的元素
pc->next = pa;
pc = pa;
pa = pa->next;
p = pb->next;
delete pb;
pb = p;
}
}
pc->next = pa ? pa : pb;//將非空表的剩余元素直接鏈接在Lc表的最后
delete Lb;//釋放Lb的頭結(jié)點
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
網(wǎng)頁題目:將兩個遞增的有序鏈表La和Lb合并為一個遞增的有序鏈表Lc-創(chuàng)新互聯(lián)
分享URL:http://www.ef60e0e.cn/article/dpijpg.html