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

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

সার্কুলার লিংকড লিস্ট থেকে ডুপ্লিকেট রিমুভ করতে হলে একটি '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 remove_duplicate_vals(self):
        curr = self.head
        if self.head is None:
            print("The list is empty")
        else:
            while True:
                temp = curr
                index_val = curr.next
                while index_val != self.head:
                    if curr.data == index_val.data:
                        temp.next = index_val.next
                    else:
                        temp = index_val
                    index_val = index_val.next
                curr = curr.next
                if curr.next == self.head:
                    break

    def print_it(self):
        curr = self.head
        if self.head is None:
            print("The list is empty")
            return
        else:
            print(curr.data)
            while curr.next != self.head:
                curr = curr.next
                print(curr.data)
            print("\n")

class circular_linked_list:
    my_cl = list_creation()
    print("Nodes are being added to the list")
    my_cl.add_data(21)
    my_cl.add_data(54)
    my_cl.add_data(78)
    my_cl.add_data(99)
    my_cl.add_data(21)
    print("The list is :")
    my_cl.print_it()
    my_cl.remove_duplicate_vals()
    print("The updated list is :")
    my_cl.print_it()

আউটপুট

Nodes are being added to the list
The list is : 21 54 78 99 21
The updated list is : 21 54 78 99

ব্যাখ্যা

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

  2. পাইথনে লিংকড লিস্ট থেকে ডুপ্লিকেট এন্ট্রি মুছে ফেলার প্রোগ্রাম

  3. পাইথনে দুটি লিংকড লিস্টের উপাদান ইন্টারলিভ (ইন্টারলিস) করার প্রোগ্রাম

  4. পাইথনে লিস্ট থেকে ডুপ্লিকেট এলিমেন্ট সরানো