Linked List Problems

·

2 min read

  1. Find the common nodes in two singly linked list

    hint
    當有1個以上的head節點時,可以先建立一個結構給head節點的。然後利用兩個指標變數來儲存各個鏈結串列的head節點,並且利用兩個迴圈來一個一個比較鏈結串列裡的資料是否相同。當資料相同時把第二個指標變數改成NULL
    solution
  2. Add two numbers represented by linked list

    hint
    宣告兩個指標變數,接著把值相加後儲存進新的鏈結串列。但是最一開始時,要先把兩個鏈結串列反轉,才能從個位數開始相加
    solution
  3. Segregate even and odd nodes in a Linked List

    hint
    先用一個指標變數指向head節點,然後再用一個指標變數儲存data,來判斷目前的節點是否為偶數,如果是的話就讓他指向head節點,如果不是的話就指向odd指標。最後分配完之後,如果有偶數節點時,就先到最後一個節點之後,改指向odd指標
    solution
  4. Find fractional node in linked list

    hint
    如果count變數%可以為0那就讓result指標變數往前,否則就讓temp指標變數往前
    solution
  5. Find modular node in a linked list

    hint
    如果count變數%可以為0那就讓result指標變數等於temp否則就讓temp指標變數往前
    solution
  6. Clone a linked list with next and random pointer

    hint
    首先先將複製的節點放在原始節點的後面,再來複製原始節點的random欄位給複製的節點,最後將原始節點和複製的節點分開,讓front指標變數指向複製的節點的第一個節點
    solution
  7. Reverse a Linked List in groups of given size

    hint
    利用counter變數來判斷這一組反轉前的最後一個節點是什麼,並且定義一個指標變數指向反轉前的第一個節點,也定義一個節點用於反轉節點,最後判斷頭節點是否為NULL
    solution
  8. Pairwise swap elements of a given linked list

    hint
    首先讓頭節點指向第二個節點好方便反轉,也用prevcurrent節點來交換節點
    solution
  9. Print reverse of a linked list without actually reversing

    solution
  10. Find intersection point of two linked list

    hint
    先取得兩個鏈結串列的長度,並且判斷哪一個鏈結串列的長度比較長,如果L2 > L1的話,就要相反的傳入,因為intersectionNode函數都是固定讓l1變數進行迴圈,這樣之後兩個鏈結串列在比較時才會是相同的長度
    solution
  11. Find length of loop in linked list

    hint
    先確定鏈結串列是不是含有loop,如果有的話再去計算loop的長度
    solution
  12. Detect loop in a linked list

    hint
    利用兩個指標來檢查是否有loop,當他們相等時代表鏈結串列有loop
    solution