मान लीजिए, हमारे पास एक सिंगली लिंक्ड लिस्ट है जहां प्रत्येक नोड में एक पूर्णांक मान होता है। हमें यह पता लगाना है कि दो क्रमिक नोड्स के बीच का निरपेक्ष अंतर 1 है या नहीं।
इसलिए, यदि इनपुट इस तरह है: start_node->5->6->7->8->7->6->5->4, तो आउटपुट True होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- temp := start_node
- जब तक temp null नहीं है, करें:
- यदि temp.link null के समान है, तो:
- लूप से बाहर आएं
- यदि |temp का मान - temp.link का मान| 1 के समान नहीं है, तो:
- False वापस करें
- 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