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

পাইথন প্রোগ্রাম: সার্কুলার লিংকড লিস্টের উপাদানগুলো সর্ট করা

সার্কুলার লিংকড লিস্ট সর্ট করা

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

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

একটি অন্য 'linked_list' ক্লাস তৈরি করতে হবে যাতে একটি ইনিশিয়ালাইজেশন ফাংশন থাকে এবং নোডের হেডটি '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 sort_list(self):
        curr = self.head
        if(self.head == None):
            print("তালিকা খালি")
        else:
            while(True):
                index_val = curr.next
                while(index_val != self.head):
                    if(curr.data > index_val.data):
                        temp = curr.data
                        curr.data = index_val.data
                        index_val.data = temp
                    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("তালিকা খালি")
            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("লিস্টে নোড যোগ করা হচ্ছে")
    my_cl.add_data(21)
    my_cl.add_data(54)
    my_cl.add_data(78)
    my_cl.add_data(99)
    my_cl.add_data(27)
    print("তালিকা:")
    my_cl.print_it()
    print("তালিকা সর্ট করা হচ্ছে")
    my_cl.sort_list()
    print("সর্ট করা তালিকা:")
    my_cl.print_it()

আউটপুট

লিস্টে নোড যোগ করা হচ্ছে
তালিকা: 21 54 78 99 27
তালিকা সর্ট করা হচ্ছে
সর্ট করা তালিকা: 21 27 54 78 99

ব্যাখ্যা

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

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

  3. পাইথনে এলিমেন্টের দৈর্ঘ্য অনুযায়ী লিস্ট সর্ট করা

  4. পাইথনে এলিমেন্টের দৈর্ঘ্য অনুযায়ী লিস্ট সর্ট করা