Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem chênh lệch tuyệt đối của các nút liên tiếp có phải là 1 trong Danh sách được liên kết bằng Python hay không

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