সার্কুলার লিংকড লিস্ট সর্ট করা
যখন একটি সার্কুলার লিংকড লিস্টের উপাদানগুলো সর্ট করতে হয়, তখন একটি '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' মেথড ব্যবহার করে কনসোলে প্রদর্শিত হয়েছে।