ধরা যাক, আমাদের একটি সিঙ্গলি লিঙ্কড লিস্ট আছে যেখানে প্রতিটি নোডে একটি পূর্ণসংখ্যা মান রয়েছে। আমাদের কাজ হলো দুটি последовательিক নোডের মানগুলোর পরম পার্থক্য (absolute difference) ১ কিনা তা নির্ণয় করা।
উদাহরণস্বরূপ, যদি ইনপুট হয় start_node → 5 → 6 → 7 → 8 → 7 → 6 → 5 → 4, তবে আউটপুট হবে True।
সমাধানের ধাপসমূহ
temp := start_node(শুরुआত নোড থেকে শুরু করুন)tempনাল (null) না হওয়া পর্যন্ত লুপ চালান:- যদি
temp.linkনাল হয়, তবে লুপ থেকে বের হয়ে যান - যদি
|temp.value - temp.link.value| ≠ 1হয়, তবেFalseফেরত দিন temp := temp.link(পরবর্তী নোডে যান)
- যদি
- লুপ সম্পূর্ণ হলে
Trueফেরত দিন
পাইথন বাস্তবায়ন
import math
class LinkNode:
def __init__(self, value):
self.value = value
self.link = None
def create_node(value):
temp = LinkNode(value)
temp.value = value
temp.link = None
return temp
def make_list(elements):
head = LinkNode(elements[0])
for element in elements[1:]:
ptr = head
while ptr.link:
ptr = ptr.link
ptr.link = LinkNode(element)
return head
def solve(start_node):
temp = start_node
while temp:
if temp.link is 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)) # আউটপুট: True
ইনপুট
[5, 6, 7, 8, 7, 6, 5, 4]
আউটপুট
True