題目:
給定兩個有序鍊錶的頭指標head1 和head2,列印兩個鍊錶的公共部分
**:
這個函式中我使用了我自己寫的單鏈錶類,這個**在另外一篇blog裡。
python版本的單鏈錶類
該問題的函式如下:
class
linkedlistalgorithms
(object):
def__init__
(self):
pass
defprint_common_part
(self, head1, head2):
# 給定兩個鍊錶的頭指標,列印出公共的部分
if head1.next == 0
or head2.next == 0:
print
'no common part between two linked lists.'
common =
while head1 is
notnone
and head2 is
notnone:
if head1.value > head2.value:
head2 = head2.next
elif head1.value < head2.value:
head1 = head1.next
else:
head1, head2 = head1.next, head2.next
if head1 == 0
or head2 == 0:
break
print
'common part: ', common
分析:
由於是有序鍊錶,所以就不需要一遍遍地去搜尋鍊錶中的每個值的大小,如果遇到無序鍊錶,第一件事還是要先排序,畢竟排序的時間複雜度可以做到o(nlogn),而一遍遍的搜尋的話,複雜度一定是o(n^2)。
然後使用兩個指標,不斷地向後推進鍊錶中的位置,直到其中一方搜尋完整個鍊錶。
列印兩個有序鍊錶的公共部分
題目 給定兩個有序鍊錶的頭指標head1和head2,列印兩個鍊錶的公共部分。1 head1的值小於head2,則head1往下移動 2 head1的值小於head2,則head2往下移動 3 相等則列印任何乙個鍊錶節點的值,head1和head2都往下移動。4 當head1或head2移動到nul...
列印兩個有序鍊錶的公共部分
引言 給定兩個鍊錶,列印兩個鍊錶中的公共部分。思路從兩個鍊錶的第乙個節點的value值開始比較,誰小移動誰。如果相等就輸出,並同時移動到下乙個節點。public class twolinkedlistsame public static void twolinkedlistsames node he...
列印兩個有序鍊錶的公共部分
說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 列印兩個有序鍊錶的公共部分 這一題目的c 復現。感謝左程雲老師的支援。題目 給定兩個有序鍊錶的頭指標 head1 和 head2,列印兩個鍊錶的公共部分。思路 依次比較 編譯環境 centos6.7 x86 64 gcc 4.4.7 實現...