Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

सर्कुलर लिंक्ड लिस्ट के मध्य से नोड डिलीट करने के लिए Python प्रोग्राम


जब सर्कुलर लिंक्ड लिस्ट के मध्य से एक नोड डिलीट करने की आवश्यकता होती है, तो एक 'Node' क्लास बनाने की आवश्यकता होती है। इस क्लास में दो एट्रिब्यूट्स होते हैं: नोड में मौजूद डेटा, और लिंक्ड लिस्ट के अगले नोड तक पहुंच।

सर्कुलर लिंक्ड लिस्ट में, हेड और रियर एक-दूसरे के निकट होते हैं। वे एक सर्कल बनाने के लिए जुड़े होते हैं, और अंतिम नोड में 'NULL' वैल्यू नहीं होता।

एक और क्लास बनाने की आवश्यकता होती है जिसमें एक इनिशियलाइज़ेशन फ़ंक्शन हो, और नोड के हेड को 'None' से इनिशियलाइज़ किया जाता है। साइज़ वेरिएबल को 0 से इनिशियलाइज़ किया जाता है।

लिंक्ड लिस्ट में नोड जोड़ने, उन्हें कंसोल पर प्रिंट करने, और मध्य इंडेक्स से नोड डिलीट करने में मदद करने के लिए यूज़र-डिफाइंड फ़ंक्शन्स होंगे।

इसके लिए एक प्रदर्शन नीचे दिया गया है:

उदाहरण

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 = int(self.size) + 1

    def delete_from_mid(self):
        if self.head is None:
            return
        else:
            count = (self.size // 2) if (self.size % 2 == 0) else ((self.size + 1) // 2)
            if self.head != self.tail:
                temp = self.head
                curr = None
                for i in range(0, count - 1):
                    curr = temp
                    temp = temp.next
                if curr is not None:
                    curr.next = temp.next
                    temp = None
                else:
                    self.head = self.tail = temp.next
                    self.tail.next = self.head
                    temp = None
            else:
                self.head = self.tail = None
            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, end=" ")
            while curr.next != self.head:
                curr = curr.next
                print(curr.data, end=" ")
            print("\n")

class circular_linked_list:
    my_cl = list_creation()
    my_cl.add_data(11)
    my_cl.add_data(52)
    my_cl.add_data(36)
    my_cl.add_data(74)
    print("The original list is :")
    my_cl.print_it()
    while my_cl.head is not None:
        my_cl.delete_from_mid()
        print("The list after updation is :")
        my_cl.print_it()

आउटपुट

The original list is : 11 52 36 74
The list after updation is : 11 36 74
The list after updation is : 11 74
The list after updation is : 74
The list after updation is : The list is empty

व्याख्या

  • 'Node' क्लास बनाई गई है।
  • आवश्यक एट्रिब्यूट्स के साथ एक और क्लास बनाई गई है।
  • 'add_data' नामक एक और मेथड परिभाषित किया गया है, जिसका उपयोग सर्कुलर लिंक्ड लिस्ट में डेटा जोड़ने के लिए किया जाता है।
  • 'delete_from_middle' नामक एक और मेथड परिभाषित किया गया है, जो मध्य से एलिमेंट्स को एक-एक करके हटाता है, इसके रेफरेंस को हटाकर।
  • 'print_it' नामक एक और मेथड परिभाषित किया गया है, जिसका उपयोग लिंक्ड लिस्ट डेटा को कंसोल पर प्रदर्शित करने के लिए किया जाता है।
  • 'list_creation' क्लास का एक ऑब्जेक्ट बनाया जाता है, और डेटा जोड़ने के लिए उस पर मेथड्स कॉल किए जाते हैं।
  • 'delete_from_middle' मेथड को कॉल किया जाता है।
  • यह लिंक्ड लिस्ट में नोड्स के माध्यम से इटरेट करता है, सबसे मध्य इंडेक्स प्राप्त करता है और एलिमेंट्स को डिलीट करना शुरू करता है।
  • यह 'print_it' मेथड का उपयोग करके कंसोल पर प्रदर्शित होता है।
  1. - पायथन प्रोग्राम: सर्कुलर लिंक्ड लिस्ट में एलिमेंट सर्च करना

    सर्कुलर लिंक्ड लिस्ट में किसी एलिमेंट को सर्च करने के लिए, हमें एक Node क्लास बनाने की आवश्यकता होती है। इस क्लास में दो एट्रिब्यूट्स होते हैं: नोड में मौजूद डेटा और लिंक्ड लिस्ट के अगले नोड का एक्सेस। सर्कुलर लिंक्ड लिस्ट की संरचना सर्कुलर लिंक्ड लिस्ट में, हेड (head) और रियर (rear) एक-दूसरे से जु

  1. - पायथन में सिंगली लिंक्ड लिस्ट के मध्य नोड को खोजने का प्रोग्राम

    मान लीजिए हमारे पास एक सिंगली लिंक्ड लिस्ट नोड है, हमें मध्य नोड का मान ढूंढना है। और जब दो मध्य नोड होते हैं, तो हम दूसरा वाला वापस करेंगे। हमें इसे सिंगल पास में हल करने का प्रयास करना है। उदाहरण के लिए, यदि इनपुट [5,9,6,4,8,2,1,4,5,2] है, तो आउटपुट 2 होगा। इसे हल करने के लिए हम निम्न चरणों का पा

  1. - पायथन में लिंक्ड लिस्ट में नोड हटाएं

    मान लीजिए हमारे पास कुछ तत्वों के साथ एक लिंक्ड लिस्ट है। हमारा कार्य एक फंक्शन लिखना है जो दिए गए नोड को लिस्ट से हटा देगा। यदि लिस्ट 1 → 3 → 5 → 7 → 9 जैसी है, और 3 को हटाने के बाद, यह 1 → 5 → 7 → 9 हो जाएगी। मान लीजिए हमारे पास node पॉइंटर है जो हटाए जाने वाले नोड को इंगित करता है, हमें नोड को ह