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

पायथन में लिंक की गई सूची में नोड्स को स्वैप करने का कार्यक्रम

मान लीजिए कि हमारे पास एक सूची L और दूसरा मान k है। हमें शुरू से kth नोड और अंत से kth नोड को स्वैप करना होगा और अंत में अंतिम सूची वापस करनी होगी।

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

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

  • अस्थायी:=एल
  • 0 से k-2 की श्रेणी में i के लिए, करें
    • अस्थायी:=अस्थायी के बाद
  • फर्स्ट नोड:=अस्थायी
  • सेकंडनोड:=एल
  • जबकि अगला अस्थायी शून्य नहीं है, करें
    • सेकेंडनोड:=सेकेंडनोड के आगे
    • अस्थायी:=अस्थायी के बाद
  • फर्स्टनोड का स्वैप वैल्यू और सेकेंडनोड का वैल्यू
  • रिटर्न एल

उदाहरण

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

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 नोड्स को पहले m नोड्स को हटा दिए जाने के बाद। हम इसे तब तक करते हैं जब तक

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

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

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

    मान लीजिए कि हमारे पास एक लिंक्ड सूची है। हमें यह जांचना होगा कि सूची के तत्व एपेलिंड्रोम बना रहे हैं या नहीं। तो अगर सूची तत्व [1,2,3,2,1] जैसा है, तो यह एक पैलिंड्रोम है। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - तेज:=सिर, धीमा:=सिर, रेव:=कोई नहीं और झंडा:=1 यदि सिर खाली है, तो सही ल