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

ตรวจสอบว่าความแตกต่างแน่นอนของโหนดที่ต่อเนื่องกันคือ 1 ในรายการที่เชื่อมโยงใน Python


สมมติว่าเรามีรายการที่เชื่อมโยงโดยลำพังซึ่งแต่ละโหนดมีค่าจำนวนเต็ม เราต้องค้นหาว่าความแตกต่างที่แน่นอนระหว่างสองโหนดที่ต่อเนื่องกันคือ 1 หรือไม่

ดังนั้น หากอินพุตเป็นเหมือน start_node->5->6->7->8->7->6->5->4 ผลลัพธ์จะเป็น True

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • อุณหภูมิ :=start_node
  • ในขณะที่ temp ไม่เป็นค่าว่าง ให้ทำ
    • ถ้า temp.link เหมือนกับ null แล้ว
      • ออกมาจากวงจร
    • ถ้า |ค่าของ (ชั่วคราว) - ค่าของ (temp.link)| ไม่เหมือนกับ 1 แล้ว
      • คืนค่าเท็จ
    • temp :=temp.link
  • คืนค่า True

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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

อินพุต

[5, 6, 7, 8, 7, 6, 5, 4]

ผลลัพธ์

True