c c 單鏈表面試題 鍊錶相交問題

2021-07-12 04:30:39 字數 830 閱讀 3988

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...