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

সার্কুলার লিংকড লিস্ট থেকে ম্যাক্সিমাম ও মিনিমাম ভ্যালু নোড বের করার পাইথন প্রোগ্রাম

সার্কুলার লিংকড লিস্ট থেকে ম্যাক্সিমাম এবং মিনিমাম নোড ভ্যালু বের করতে হলে একটি 'Node' ক্লাস তৈরি করতে হয়। এই ক্লাসে দুটি অ্যাট্রিবিউট থাকে: নোডে থাকা ডেটা এবং লিংকড লিস্টের পরবর্তী নোডে অ্যাক্সেস।

সার্কুলার লিংকড লিস্টে হেড এবং রিয়ার একে অপরকে স্পর্শ করে। তারা একটি সার্কেল গঠন করে, এবং লাস্ট নোডে 'NULL' ভ্যালু থাকে না।

একটি আরো ক্লাস তৈরি করতে হয় যাতে একটি ইনিশিয়ালাইজেশন ফাংশন থাকে, এবং নোডের হেড 'None'-এ ইনিশিয়ালাইজ করা হয়।

লিংকড লিস্টে নোড যোগ করা, নোডগুলোর মিনিমাম এবং ম্যাক্সিমাম ভ্যালু বের করা এবং সেগুলো ডিসপ্লে করার জন্য ইউজার-ডিফাইন্ড মাল্টিপল মেথড সংজ্ঞায়িত করা হয়।

নিচে ডেমোстран্স্ট্রেশন দেওয়া হলো:

উদাহরণ

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None

class list_creation:
    def __init__(self):
        self.head = Node(None)
        self.tail = Node(None)
        self.head.next = self.tail
        self.tail.next = self.head

    def add_data(self, my_data):
        new_node = Node(my_data)
        if self.head.data is None:
            self.head = new_node
            self.tail = new_node
            new_node.next = self.head
        else:
            self.tail.next = new_node
            self.tail = new_node
            self.tail.next = self.head

    def find_min_node(self):
        curr = self.head
        min_val = self.head.data
        if self.head is None:
            print("The list is empty")
        else:
            while True:
                if min_val > curr.data:
                    min_val = curr.data
                curr = curr.next
                if curr == self.head:
                    break
            print("Minimum value node in the list: " + str(min_val))

    def find_max_node(self):
        curr = self.head
        max_val = self.head.data
        if self.head is None:
            print("List is empty")
        else:
            while True:
                if max_val < curr.data:
                    max_val = curr.data
                curr = curr.next
                if curr == self.head:
                    break
            print("The maximum value node is : " + str(max_val))

class circular_linked_list:
    my_cl = list_creation()
    print("Values have been added to the list")
    my_cl.add_data(11)
    my_cl.add_data(52)
    my_cl.add_data(36)
    my_cl.add_data(74)
    my_cl.find_max_node()
    my_cl.find_min_node()

আউটপুট

Values have been added to the list
The maximum value node is : 74
Minimum value node in the list: 11

ব্যাখ্যা

  • 'Node' ক্লাস তৈরি করা হয়েছে।
  • প্রয়োজনীয় অ্যাট্রিবিউটসহ আরেকটি ক্লাস তৈরি করা হয়েছে।
  • 'add_data' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টে ডেটা যোগ করতে ব্যবহৃত হয়।
  • 'find_max_node' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা লিস্টের মাধ্যমে ইটারেট করে নোডে ম্যাক্সিমাম ভ্যালু বের করে।
  • 'find_min_node' নামে একটি মেথড সংজ্ঞায়িত করা হয়েছে, যা লিস্টের মাধ্যমে ইটারেট করে নোডে মিনিমাম ভ্যালু বের করে।
  • 'list_creation' ক্লাসের একটি অবজেক্ট তৈরি করা হয়েছে, এবং ডেটা যোগ করতে মেথডগুলো কল করা হয়েছে।
  • একটি 'init' মেথড সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিংকড লিস্টের প্রথম এবং লাস্ট নোডকে None সেট করে।
  • 'find_max_node' এবং 'find_min_node' মেথডগুলো কল করা হয়েছে।
  • এটি লিংকড লিস্টের নোডগুলোতে ইটারেট করে, লিস্টে ম্যাক্সিমাম এবং মিনিমাম ভ্যালু বের করে।
  • এটি কনসোলে ডিসপ্লে করা হয়।
  1. পাইথনে ট্রি থেকে একটি এজ কাট করে দুটি সাবট্রিের নোড ভ্যালু সামের পার্থক্য মিনিমাইজ করা

  2. পাইথনে লিংকড লিস্টে k-তম শেষ নোড খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে সিংলি লিংকড লিস্টের মিডল নোড খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে লিস্টে সর্বোচ্চ ও ন্যূনতম উপাদানের পজিশন বের করার প্রোগ্রাম