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

पायथन में लिंक्ड लिस्ट में नोड्स को स्वैप करने का प्रोग्राम


मान लीजिए हमारे पास एक लिस्ट L और एक मान k है। हमें शुरुआत से k-वें नोड और अंत से k-वें नोड को स्वैप करना है और अंत में अंतिम लिस्ट वापस करना है।

उदाहरण के लिए, यदि इनपुट L = [1,5,6,7,1,6,3,9,12], k = 3 है, तो आउटपुट [1,5,3,7,1,6,6,9,12] होगा, शुरुआत से 3रा नोड 6 है और अंत से 3 है, इसलिए वे स्वैप हो जाते हैं।

हल करने के चरण

  1. temp := L
  2. i को 0 से k-2 तक लूप चलाएं:
    • temp := temp.next
  3. firstNode := temp
  4. secondNode := L
  5. temp.next नल न होने तक व्हाइल लूप चलाएं:
    • secondNode := secondNode.next
    • temp := temp.next
  6. firstNode और secondNode के मान को स्वैप करें।
  7. L वापस करें।

उदाहरण

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

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(']')

def solve(L, k):
    temp = L
    for i in range(k-1):
        temp = temp.next
    firstNode = temp
    secondNode = L
    while temp.next:
        secondNode = secondNode.next
        temp = temp.next
    firstNode.val, secondNode.val = secondNode.val, firstNode.val
    return L

L = [1,5,6,7,1,6,3,9,12]
k = 3
print_list(solve(make_list(L), k))

इनपुट

[1,5,6,7,1,6,3,9,12], 3

आउटपुट

[1, 5, 3, 7, 1, 6, 6, 9, 12, ]
  1. पायथन में लिंक्ड लिस्ट से m नोड्स के बाद n नोड्स डिलीट करने का प्रोग्राम पायथन में लिंक्ड लिस्ट से m नोड्स के बाद n नोड्स डिलीट करने का प्रोग्राम

    मान लीजिए हमें एक लिंक्ड लिस्ट दी गई है जिसका स्टार्ट नोड head है, और दो पूर्णांक m और n हैं। हमें लिस्ट को ट्रैवर्स करना है और कुछ नोड्स डिलीट करने हैं जैसे कि पहले m नोड्स लिस्ट में रखे जाएं और पहले m नोड्स के बाद अगले n नोड्स डिलीट कर दिए जाएं। हम इसे तब तक करते हैं जब तक लिंक्ड लिस्ट का अंत न आ

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

    मान लीजिए हमारे पास एक सिंगली लिंक्ड लिस्ट है, हमें सभी ऑड नोड्स को एक साथ ग्रुप करना है उसके बाद ईवन नोड्स। यहां हम नोड की पोजीशन की बात कर रहे हैं न कि नोड्स में वैल्यू की। हमें इसे इन-प्लेस करने का प्रयास करना चाहिए। इसलिए यदि नोड्स [1,22,13,14,25] हैं, तो परिणाम [1,13,25,22,14] होगा। इसे हल करने

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

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