3.10
10編寫一個成員函數,檢查兩個單鏈表的內容是否相同。
首先,兩個單鏈表內容的相同應該是在兩個單鏈表長度一致的情況下進行比較,如果長度不一致也滿足不了,則必不相等。其次,只有當所有的內容一一相等時,兩個單鏈表才相等,則剩餘的所有情況均爲不相等。
在這裏插入代碼片void List_same(List la, List lb) {
int m, n,i=1;
m = List_length(la);
n = List_length(lb);
List pa, pb;
pa = la->next;
pb = lb->next;
if (m=n)
{
while (pa->info == pb->info&&i != n)
{
pa = pa->next;
pb = pb->next;
i++;
}
if (i==n&&pa->info==pb->info)
{
cout << "equal!" << endl;
}
else
{
cout << "Not equal!" << endl;
}
}
else
{
cout << "Not euqal!" << endl;
}
}
注意,上述的while循環應當擁有以下功能:1.當對位的數據內容不等時,結束循環;2.當已經比較到鏈表尾部時,結束循環。這兩者爲或的關係,所以我使用了pa->info == pb->info&&i != n。當這樣做有一個缺陷,即當比較到
鏈表尾部時,無論相等,循環都已經結束了。所以在後續判斷時還需比較最後的兩個數據內容。