Giả sử, chúng ta có một danh sách liên kết đơn trong đó mỗi nút chứa một giá trị số nguyên. Chúng ta phải tìm xem liệu hiệu số tuyệt đối giữa hai nút kế tiếp có phải là 1 hay không.
Vì vậy, nếu đầu vào giống như start_node-> 5-> 6-> 7-> 8-> 7-> 6-> 5-> 4, thì đầu ra sẽ là True.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- temp:=start_node
- trong khi tạm thời không null, hãy thực hiện
- nếu temp.link giống với null, thì
- ra khỏi vòng lặp
- if | value of (temp) - value of (temp.link) | không giống với 1, thì
- trả về Sai
- temp:=temp.link
- nếu temp.link giống với null, thì
- trả về True
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
import math class link_node: def __init__(self, value): self.value = value self.link = None def create_node(value): temp = link_node(value) temp.value = value temp.link = None return temp def make_list(elements): head = link_node(elements[0]) for element in elements[1:]: ptr = head while ptr.link: ptr = ptr.link ptr.next = link_node(element) return head def solve(start_node): temp = start_node while (temp): if (temp.link == None): break if (abs((temp.value) - (temp.link.value)) != 1) : return False temp = temp.link return True start_node = make_list([5, 6, 7, 8, 7, 6, 5, 4]) print(solve(start_node))
Đầu vào
[5, 6, 7, 8, 7, 6, 5, 4]
Đầu ra
True