• 鏈表相關面試題

    時間:2022-07-13 17:36:45 面試 我要投稿
    • 相關推薦

    鏈表相關面試題

    題一、 給定單鏈表,檢測是否有環。

    鏈表相關面試題

    使用兩個指針p1,p2從鏈表頭開始遍歷,p1每次前進一步,p2每次前進兩步。如果p2到達鏈表尾部,說明無環,否則p1、p2必然會在某個時刻相遇(p1==p2),從而檢測到鏈表中有環。

    題二、 給定兩個單鏈表(head1, head2),檢測兩個鏈表是否有交點,如果有返回第一個交點。

    如果head1==head2,那么顯然相交,直接返回head1。

    否則,分別從head1,head2開始遍歷兩個鏈表獲得其長度len1與len2。假設len1>=len2,那么指針p1由head1開始向后 移動len1-len2步。指針p2=head2,下面p1、p2每次向后前進一步并比較p1p2是否相等,如果相等即返回該結點,否則說明兩個鏈表沒有 交點。

    題三、 給定單鏈表(head),如果有環的話請返回從頭結點進入環的第一個節點。

    運用題一,我們可以檢查鏈表中是否有環。

    如果有環,那么p1p2重合點p必然在環中。從p點斷開環,方法為:p1=p, p2=p->next, p->next=NULL。此時,原單鏈表可以看作兩條單鏈表,一條從head開始,另一條從p2開始,于是運用題二的方法,我們找到它們的第一個 交點即為所求。

    題四、只給定單鏈表中某個結點p(并非最后一個結點,即p->next!=NULL)指針,刪除該結點。

    辦法很簡單,首先是放p中數據,然后將p->next的數據copy入p中,接下來刪除p->next即可。

    題五、只給定單鏈表中某個結點p(非空結點),在p前面插入一個結點。

    辦法與前者類似,首先分配一個結點q,將q插入在p后,接下來將p中的數據copy入q中,然后再將要插入的數據記錄在p中。

    題六、給定單鏈表頭結點,刪除鏈表中倒數第k個結點。

    使用兩個節點p1,p2,p1初始化指向頭結點,p2一直指向p1后第k個節點,兩個結點平行向后移動直到p2到達鏈表尾部(NULL),然后根據p1刪除對應結點。


    【鏈表相關面試題】相關文章:

    面試題與技巧07-12

    華為面試題07-11

    「MySQL」經典面試題07-11

    c面試題08-04

    采購面試題07-11

    面試題集錦07-11

    Java面試題07-12

    SQL面試題07-12

    Google 的瘋狂面試題07-11

    java面試題五07-11

    黄频国产免费高清视频_富二代精品短视频在线_免费一级无码婬片aa_精品9E精品视频在线观看