কম্পিউটার টিউটোরিয়াল

পাইথনে লিঙ্কড লিস্টের ক্রমিক নোডগুলোর পরম পার্থক্য ১ কিনা তা যাচাই করুন


ধরা যাক, আমাদের একটি সিঙ্গলি লিঙ্কড লিস্ট আছে যেখানে প্রতিটি নোডে একটি পূর্ণসংখ্যা মান রয়েছে। আমাদের কাজ হলো দুটি последовательিক নোডের মানগুলোর পরম পার্থক্য (absolute difference) ১ কিনা তা নির্ণয় করা।

উদাহরণস্বরূপ, যদি ইনপুট হয় start_node → 5 → 6 → 7 → 8 → 7 → 6 → 5 → 4, তবে আউটপুট হবে True।

সমাধানের ধাপসমূহ

  1. temp := start_node (শুরुआত নোড থেকে শুরু করুন)
  2. temp নাল (null) না হওয়া পর্যন্ত লুপ চালান:
    • যদি temp.link নাল হয়, তবে লুপ থেকে বের হয়ে যান
    • যদি |temp.value - temp.link.value| ≠ 1 হয়, তবে False ফেরত দিন
    • temp := temp.link (পরবর্তী নোডে যান)
  3. লুপ সম্পূর্ণ হলে 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
  1. পাইথনে লিংকড লিস্টে নোড সোয়াপ করার প্রোগ্রাম

  2. Python প্রোগ্রাম: টাপল (Tuple) গুলোকে তাদের অ্যাবসোলিউট ডিফারেন্স (Absolute Difference) এর ফ্রিকোয়েন্সি অনুযায়ী সর্ট করা

  3. পাইথন - তালিকায় ক্রমাগত ভাগফল বের করা

  4. পাইথনে লিংকড লিস্ট থেকে m নোডের পর n নোড ডিলিট করার প্রোগ্রাম