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

পাইথন প্রোগ্রাম: ডাবলি লিংকড লিস্টের মাঝপথ থেকে নোড ডিলিট করা

ডাবলি লিংকড লিস্টের মাঝপথ থেকে নোড ডিলিট

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

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

ব্যবহারকারী দ্বারা একাধিক মেথড সংজ্ঞায়িত করা হয় লিংকড লিস্টে নোড যোগ করতে, নোডগুলো প্রদর্শন করতে এবং ডাবলি লিংকড লিস্টের শেষ থেকে নোড ডিলিট করতে।

একটি ডাবলি লিংকড লিস্টে, নোডগুলোর পয়েন্টার থাকে। বর্তমান নোডটির পরবর্তী নোড এবং পূর্ববর্তী নোড দুটোর পয়েন্টার থাকে। তালিকার শেষ মানটির नेक्सট পয়েন্টারে 'NULL' মান থাকে। এটি উভয় দিকেই ট্রাভার্স করা যায়।

উদাহরণ

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

class double_list:
    def __init__(self):
        self.head = None
        self.tail = None
        self.size = 0
    def add_data(self, my_data):
        new_node = Node(my_data)
        if(self.head == None):
            self.head = self.tail = new_node
            self.head.previous = None
            self.tail.next = None
        else:
            self.tail.next = new_node
            new_node.previous = self.tail
            self.tail = new_node
            self.tail.next = None
    def print_it(self):
        curr = self.head
        if (self.head == None):
            print("তালিকা খালি")
            return
        print("ডাবলি লিংকড লিস্টের নোডগুলো:")
        while curr != None:
            print(curr.data)
            curr = curr.next
    def delete_from_middle(self):
        if(self.head == None):
            return
        else:
            curr = self.head
            mid = (self.size // 2) if(self.size % 2 == 0) else((self.size + 1) // 2)
            for i in range(1, mid):
                curr = curr.next
            if(curr == self.head):
                self.head = curr.next
                self.tail.next = None
            elif(curr == self.tail):
                self.tail = self.tail.prev
            else:
                curr.prev.next = curr.next
                curr.next.prev = curr.prev
                current = None
            self.size = self.size - 1

my_instance = double_list()
print("ডাবলি লিংকড লিস্টে উপাদান যোগ করা হচ্ছে")
my_instance.add_data(10)
my_instance.add_data(24)
my_instance.add_data(54)
my_instance.add_data(77)
my_instance.add_data(92)
my_instance.print_it()
while(my_instance.head != None):
    my_instance.delete_from_middle()
    print("মাঝপথ থেকে উপাদান ডিলিট করার পর তালিকা:")
    my_instance.print_it()

আউটপুট

ডাবলি লিংকড লিস্টে উপাদান যোগ করা হচ্ছে
ডাবলি লিংকড লিস্টের নোডগুলো: 10 24 54 77 92
মাঝপথ থেকে উপাদান ডিলিট করার পর তালিকা:
ডাবলি লিংকড লিস্টের নোডগুলো: 24 54 77 92
মাঝপথ থেকে উপাদান ডিলিট করার পর তালিকা:
ডাবলি লিংকড লিস্টের নোডগুলো: 54 77 92
মাঝপথ থেকে উপাদান ডিলিট করার পর তালিকা:
ডাবলি লিংকড লিস্টের নোডগুলো: 77 92
মাঝপথ থেকে উপাদান ডিলিট করার পর তালিকা:
ডাবলি লিংকড লিস্টের নোডগুলো: 92
মাঝপথ থেকে উপাদান ডিলিট করার পর তালিকা:
তালিকা খালি

ব্যাখ্যা

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

  2. পাইথন প্রোগ্রাম: টারনারি ট্রি থেকে ডাবলি লিংকড লিস্ট তৈরি

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

  4. পাইথনে লিংকড লিস্টে নোড ডিলিট