Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบความยาว Linked List ว่า Even หรือ Odd ด้วย Python

โจทย์: กำหนด Linked List ตรวจสอบว่าความยาวเป็น Even หรือ Odd

ตัวอย่าง

head = [5,8,7,4,3,6,4,5,8] → Odd (9 nodes)

อัลกอริทึม (Fast Pointer)

  1. ใช้ Pointer วิ่งทีละ 2 Node (head = head.next.next)
  2. จบลูป: ถ้า head == None → Even (วิ่งครบคู่)
  3. ถ้า head != None → Odd (เหลือ Node เดียว)

โค้ดตัวอย่าง

class ListNode:
    def __init__(self, data, next=None):
        self.val = data
        self.next = next

def make_list(elements):
    head = ListNode(elements[0])
    for element in elements[1:]:
        ptr = head
        while ptr.next:
            ptr = ptr.next
        ptr.next = ListNode(element)
    return head

def solve(head):
    while head is not None and head.next is not None:
        head = head.next.next
    if head is None:
        return "Even"
    return "Odd"

head = make_list([5,8,7,4,3,6,4,5,8])
print(solve(head))

Input / Output

Input: [5,8,7,4,3,6,4,5,8]
Output: Odd