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

पायथन प्रोग्राम: लिंक्ड लिस्ट में साइकिल का पता लगाना


जब लिंक्ड लिस्ट में साइकिल का पता लगाना होता है, तो लिंक्ड लिस्ट में एलिमेंट्स जोड़ने और लिंक्ड लिस्ट में एलिमेंट प्राप्त करने के लिए मेथड्स डिफाइन की जाती हैं। एक अन्य मेथड डिफाइन की जाती है जो जांचती है कि हेड और रियर वैल्यू समान हैं या नहीं। इस परिणाम के आधार पर साइकिल का पता लगाया जाता है।

उदाहरण

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

class LinkedList_structure:
    def __init__(self):
        self.head = None
        self.last_node = None

    def add_vals(self, data):
        if self.last_node is None:
            self.head = Node(data)
            self.last_node = self.head
        else:
            self.last_node.next = Node(data)
            self.last_node = self.last_node.next

    def get_node_val(self, index):
        curr = self.head
        for i in range(index):
            curr = curr.next
            if curr is None:
                return None
            return curr

def check_cycle(my_list):
    slow_val = my_list.head
    fast_val = my_list.head
    while (fast_val != None and fast_val.next != None):
        slow_val = slow_val.next
        fast_val = fast_val.next.next
        if slow_val == fast_val:
            return True
    return False

my_linked_list = LinkedList_structure()
my_list = input('लिंक्ड लिस्ट में एलिमेंट्स दर्ज करें: ').split()
for elem in my_list:
    my_linked_list.add_vals(int(elem))
my_len = len(my_list)
if my_len != 0:
    vals = '0-' + str(my_len - 1)
    last_ptr = input('नोड का इंडेक्स [' + vals + '] दर्ज करें जिस पर लास्ट नोड को पॉइंट करना है (None के लिए खाली छोड़ें): ').strip()
    if last_ptr == '':
        last_ptr = None
    else:
        last_ptr = my_linked_list.get_node_val(int(last_ptr))
        my_linked_list.last_node.next = last_ptr
if check_cycle(my_linked_list):
    print("लिंक्ड लिस्ट में साइकिल है")
else:
    print("लिंक्ड लिस्ट में साइकिल नहीं है")

आउटपुट

लिंक्ड लिस्ट में एलिमेंट्स दर्ज करें: 56 78 90 12 4
नोड का इंडेक्स [0-4] दर्ज करें जिस पर लास्ट नोड को पॉइंट करना है (None के लिए खाली छोड़ें):
लिंक्ड लिस्ट में साइकिल नहीं है

व्याख्या

  • 'Node' क्लास बनाई गई है।

  • आवश्यक एट्रिब्यूट्स के साथ 'LinkedList_structure' क्लास बनाई गई है।

  • इसमें एक 'init' फंक्शन है जो पहले एलिमेंट यानी 'head' को 'None' से इनिशियलाइज़ करता है।

  • 'add_vals' नामक एक मेथड डिफाइन की गई है, जो लिंक्ड लिस्ट में वैल्यू जोड़ने में मदद करती है।

  • 'get_node_val' नामक एक अन्य मेथड डिफाइन की गई है, जो लिंक्ड लिस्ट में करंट नोड की वैल्यू प्राप्त करने में मदद करती है।

  • 'check_cycle' नामक एक अन्य मेथड डिफाइन की गई है, जो यह पता लगाने में मदद करती है कि हेड और रियर समान हैं या नहीं, जिसका अर्थ है कि यह एक साइकिल होगी।

  • यह साइकिल की उपस्थिति या अनुपस्थिति के आधार पर True या False रिटर्न करती है।

  • 'LinkedList_structure' का एक इंस्टेंस बनाया गया है।

  • लिंक्ड लिस्ट में एलिमेंट्स जोड़े गए हैं।

  • इस लिंक्ड लिस्ट पर 'check_cycle' मेथड कॉल की गई है।

  • आउटपुट कंसोल पर डिस्प्ले किया गया है।


  1. - पायथन प्रोग्राम: सर्कुलर लिंक्ड लिस्ट में एलिमेंट सर्च करना

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

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

    मान लीजिए हमारे पास एक लिंक्ड लिस्ट है, और हमें जांचना है कि क्या इसमें कोई साइकिल है या नहीं। दिए गए लिंक्ड लिस्ट में साइकिल को दर्शाने के लिए, हम एक पूर्णांक पॉइंटर pos का उपयोग करेंगे। यह pos लिंक्ड लिस्ट में एक स्थिति दर्शाता है जहां टेल जुड़ा हुआ है। यदि pos -1 है, तो लिंक्ड लिस्ट में कोई साइक

  1. पायथन प्रोग्राम: निर्देशित ग्राफ में चक्र का पता लगाएं पायथन प्रोग्राम: निर्देशित ग्राफ में चक्र का पता लगाएं

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक निर्देशित ग्राफ दिया गया है, हमें जांचना है कि ग्राफ में चक्र है या नहीं। आउटपुट सच होना चाहिए यदि दिया गया ग्राफ कम से कम एक चक्र रखता है, अन्यथा गलत। उदाहरण # collections मॉड्यूल from collections import defaultdict # ग्र