বৃত্তাকার লিঙ্কযুক্ত তালিকার মাঝখানে একটি নতুন নোড সন্নিবেশ করার প্রয়োজন হলে, একটি 'নোড' ক্লাস তৈরি করতে হবে। এই ক্লাসে, দুটি বৈশিষ্ট্য রয়েছে, নোডে থাকা ডেটা এবং লিঙ্ক করা তালিকার পরবর্তী নোডে অ্যাক্সেস।
একটি বৃত্তাকার লিঙ্কযুক্ত তালিকায়, মাথা এবং পিছনের অংশ একে অপরের সংলগ্ন। তারা একটি বৃত্ত গঠনের জন্য সংযুক্ত, এবং শেষ নোডে 'NULL' মান নেই৷
আরেকটি ক্লাস তৈরি করতে হবে যেটির একটি ইনিশিয়ালাইজেশন ফাংশন থাকবে, এবং নোডের হেডকে 'কোনও' তে আরম্ভ করা হবে।
লিঙ্ক করা তালিকার মধ্যে নোড যোগ করতে এবং নোডের মান প্রিন্ট করার জন্য ব্যবহারকারীর দ্বারা একাধিক পদ্ধতি সংজ্ঞায়িত করা হয়।
নীচে একই −
এর জন্য একটি প্রদর্শন রয়েছে৷উদাহরণ
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
self.size = 0;
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
self.size = self.size+1
def add_in_between(self,my_data):
new_node = Node(my_data);
if(self.head == None):
self.head = new_node;
self.tail = new_node;
new_node.next = self.head;
else:
count = (self.size//2) if (self.size % 2 == 0) else ((self.size+1)//2);
temp = self.head;
for i in range(0,count):
curr = temp;
temp = temp.next;
curr.next = new_node;
new_node.next = temp;
self.size = self.size+1;
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)
print("The list is :")
my_cl.print_it();
my_cl.add_in_between(33);
print("The updated list is :")
my_cl.print_it();
my_cl.add_in_between(56);
print("The updated list is :")
my_cl.print_it();
my_cl.add_in_between(0);
print("The updated list is :")
my_cl.print_it(); আউটপুট
Nodes are being added to the list The list is : 21 54 78 99 The updated list is : 21 54 33 78 99 The updated list is : 21 54 33 56 78 99 The updated list is : 21 54 33 0 56 78 99
ব্যাখ্যা
- 'নোড' ক্লাস তৈরি করা হয়েছে।
- প্রয়োজনীয় বৈশিষ্ট্য সহ আরেকটি ক্লাস তৈরি করা হয়েছে।
- 'add_in_between' নামের আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা মাঝখানে সার্কুলার লিঙ্ক করা তালিকায় ডেটা যোগ করতে ব্যবহৃত হয়, অর্থাৎ মধ্যম অবস্থানে।
- 'print_it' নামে আরেকটি পদ্ধতি সংজ্ঞায়িত করা হয়েছে, যা সার্কুলার লিঙ্কড তালিকার নোডগুলি প্রদর্শন করে।
- 'লিস্ট_ক্রিয়েশন' ক্লাসের একটি অবজেক্ট তৈরি করা হয়, এবং ডেটা যোগ করার জন্য পদ্ধতিগুলিকে বলা হয়।
- একটি 'init' পদ্ধতি সংজ্ঞায়িত করা হয়, যে সার্কুলার লিঙ্কের তালিকার প্রথম এবং শেষ নোডগুলি None-এর সাথে।
- 'add_in_between' পদ্ধতিকে বলা হয়।
- এটি তালিকার মাধ্যমে পুনরাবৃত্তি করে, এবং মধ্যম সর্বাধিক সূচক পায় এবং এই অবস্থানে উপাদানটি সন্নিবেশ করায়।
- এটি 'print_it' পদ্ধতি ব্যবহার করে কনসোলে প্রদর্শিত হয়।