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

पायथन में लिंक्ड लिस्ट उल्टा करें


मान लीजिए हमारे पास एक लिंक्ड लिस्ट है, हमें इसे उल्टा करना है। यदि लिस्ट 1 → 3 → 5 → 7 जैसी है, तो नई उल्टी लिस्ट 7 → 5 → 3 → 1 होगी।

इसे हल करने के लिए हम इस दृष्टिकोण का पालन करेंगे:

  • लिस्ट रिवर्सल को पुनरावर्ती तरीके से करने के लिए एक प्रक्रिया परिभाषित करें solve(head, back)
  • यदि head मौजूद नहीं है, तो head वापस करें
  • temp := head.next
  • head.next := back
  • back = head
  • यदि temp खाली है, तो head वापस करें
  • head = temp
  • solve(head,back) वापस करें

उदाहरण

बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:

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

def make_list(elements):
    head = ListNode(elements[0])
    for element in elements[1:]:
        ptr = head
        while ptr.next:
            ptr = ptr.next
        ptr.next = ListNode(element)
    return head

def print_list(head):
    ptr = head
    print('[', end = "")
    while ptr:
        print(ptr.val, end = ", ")
        ptr = ptr.next
    print(']')

class Solution(object):
    def reverseList(self, head):
        """
        :type head: ListNode
        :rtype: ListNode
        """
        return self.solve(head,None)

    def solve(self, head, back):
        if not head:
            return head
        temp= head.next
        head.next = back
        back = head
        if not temp:
            return head
        head = temp
        return self.solve(head,back)

list1 = make_list([1,3,5,7])
ob1 = Solution()
list2 = ob1.reverseList(list1)
print_list(list2)

इनपुट

list1 = [1,3,5,7]

आउटपुट

[7, 5, 3, 1, ]

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

    मान लीजिए हमारे पास एक लिंक्ड लिस्ट है। हमें जांचना है कि लिस्ट के एलिमेंट्स पैलिंड्रोम बनाते हैं या नहीं। इसलिए यदि लिस्ट एलिमेंट [1,2,3,2,1] की तरह है, तो यह एक पैलिंड्रोम है। समाधान के चरण fast := head, slow := head, rev := None और flag := 1 यदि head खाली है, तो true लौटाएं जब fast और fast का n

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

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

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

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