สมมติว่าเรามีรายการที่เชื่อมโยงโดยลำพังซึ่งแต่ละโหนดมีค่าจำนวนเต็ม เราต้องค้นหาว่าความแตกต่างที่แน่นอนระหว่างสองโหนดที่ต่อเนื่องกันคือ 1 หรือไม่
ดังนั้น หากอินพุตเป็นเหมือน start_node->5->6->7->8->7->6->5->4 ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- อุณหภูมิ :=start_node
- ในขณะที่ temp ไม่เป็นค่าว่าง ให้ทำ
- ถ้า temp.link เหมือนกับ null แล้ว
- ออกมาจากวงจร
- ถ้า |ค่าของ (ชั่วคราว) - ค่าของ (temp.link)| ไม่เหมือนกับ 1 แล้ว
- คืนค่าเท็จ
- temp :=temp.link
- ถ้า temp.link เหมือนกับ null แล้ว
- คืนค่า 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