1、判斷兩個單鏈表是不是相交
思路分析:
最簡單直接的方法就是依次遍歷兩條鍊錶,判斷其尾節點是不是相等,相等則相交否則不相交。
bool checkcross(const list& list1, const list& list2)//list1,list2為兩個物件
while (l2->_next)//找到list2的尾節點
if (l1 == l2)
return false;//不相交
}
2、找到兩個單鏈表的交點
思路分析:
在兩個單鏈表長度相等的情況下是最簡單的,只需要同時遍歷兩個鍊錶並且不斷地比較,如果相等則為交點否則不是交點。但是在兩條單鏈表長度不相等的情況下,則可以讓長度較長的鍊錶先遍歷兩條鍊錶的長度之差,然後再同時遍歷既可。
node* getcrossnode(list& list1, list& list2)
while (fast&&slow)
fast = fast->_next;
slow = slow->_next;
} }else //list2的長度比list1的長度要長
while (fast&&slow)
fast = fast->_next;
slow = slow->_next;
} }return null;//不相交
}int list::getlistlength()//求取單鏈表長度的方法
return count;
}
單鏈表 (面試題)
關於單鏈表的基本操作,之前已經總結過了,那些掌握之後算是了解了單鏈表是什麼?不過現在面試的題中,肯定不會只讓你回答單鏈表的基礎操作,總是會改變一些東西,或是擴充套件一下。下面就是一些關於單鏈表的擴充套件內容 include include include pragma warning disable...
單鏈表面試題
1.倒序列印鍊錶 void reverseprint slistnode pfirst 有兩種方法 1.遞迴操作 2.非遞迴操作 2 非遞迴 slistnode pend slistnode pcur pend null while pfirst pend pend pcur printf d pe...
單鏈表(面試題)
鍊錶反轉思路 1.單鏈表中有效節點的個數 2.查詢單鏈表中弟第k個節點 3.單鏈表的反轉 實現 如下 public class testlink 1單鏈表中有效節點的個數 遍歷得出個數 public static intcount heronode head int count 0 while tr...