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

पायथन में लिंक्ड लिस्ट को k आकार के समूहों द्वारा उलटने का प्रोग्राम


मान लीजिए हमारे पास एक सिंगली लिंक्ड लिस्ट है, और एक मान k है, हमें प्रत्येक k सन्निकट नोड्स के समूह को उलटना है।

इसलिए, यदि इनपुट List = [1,2,3,4,5,6,7,8,9,10], k = 3 जैसा है, तो आउटपुट [3, 2, 1, 6, 5, 4, 9, 8, 7, 10] होगा।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −

  • tmp := मान 0 के साथ एक नया नोड
  • tmp का next := node
  • prev := null, curr := null
  • lp := temp, lc := curr
  • cnt := k
  • जब तक curr null नहीं है, करें
    • prev := null
    • जब तक cnt > 0 और curr null नहीं है, करें
      • following := curr का next
      • curr का next := prev
      • prev := curr, curr := following
      • cnt := cnt - 1
    • lp का next := prev, lc का next := curr
    • lp := lc, lc := curr
    • cnt := k
  • tmp का next वापस करें

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

उदाहरण

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:    def solve(self, node, k):       tmp = ListNode(0)       tmp.next = node       prev, curr = None, node       lp, lc = tmp, curr       cnt = k       while curr:          prev = None          while cnt > 0 and curr:             following = curr.next             curr.next = prev             prev, curr = curr, following             cnt -= 1          lp.next, lc.next = prev, curr          lp, lc = lc, curr          cnt = k       return tmp.next ob = Solution() head = make_list([1,2,3,4,5,6,7,8,9,10]) print_list(ob.solve(head, 3))

इनपुट

[1,2,3,4,5,6,7,8,9,10], 3

आउटपुट

[3, 2, 1, 6, 5, 4, 9, 8, 7, 10, ]

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

    मान लीजिए हमारे पास एक लिंक्ड लिस्ट है, हमें इसे उल्टा करना है। यदि लिस्ट 1 → 3 → 5 → 7 जैसी है, तो नई उल्टी लिस्ट 7 → 5 → 3 → 1 होगी। इसे हल करने के लिए हम इस दृष्टिकोण का पालन करेंगे: लिस्ट रिवर्सल को पुनरावर्ती तरीके से करने के लिए एक प्रक्रिया परिभाषित करें solve(head, back) यदि head मौजूद नही

  1. - वाक्य में प्रत्येक शब्द को उल्टा करने का पायथन प्रोग्राम

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

  1. - दिए गए आकार के समूहों में सरणी को उल्टा करने का पायथन प्रोग्राम

    समस्या विवरण =n तो हम सरणी के सभी तत्वों को उल्टा कर देते हैं। एल्गोरिदम i लूप कंट्रोल वेरिएबल है जिसे 0 से आरंभ किया गया है। व्हाइल लूप का उपयोग करके जांचें कि i, n से कम है या नहीं। यदि हां तो: L = i (बाएं सब सरणी) R = min(i + p - 1, n - 1) (दाएं सब सरणी) व्हाइल लूप का उपयोग करक