ধরুন, আমাদের একটি এককভাবে লিঙ্কযুক্ত তালিকা রয়েছে যেখানে প্রতিটি নোডে একটি পূর্ণসংখ্যার মান রয়েছে। দুটি ধারাবাহিক নোডের মধ্যে পরম পার্থক্য 1 কিনা তা আমাদের খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুট start_node->5->6->7->8->7->6->5->4 এর মত হয়, তাহলে আউটপুট হবে True।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- temp :=start_node
- যখন temp নাল না হয়, do
- যদি temp.link null এর মত হয়, তাহলে
- লুপ থেকে বেরিয়ে আসুন
- যদি |(temp) এর মান - (temp.link)| এর মান 1 এর মত নয়, তারপর
- মিথ্যে ফেরত দিন
- temp :=temp.link
- যদি temp.link null এর মত হয়, তাহলে
- সত্য ফেরান
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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