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

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

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

होगा।

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

  • यदि सिर शून्य है या अगला सिर शून्य है, तो सिर वापस करें
  • head1 :=head, head2 :=अगला सिर, head_beg :=अगला सिर
  • जबकि शीर्ष2 का अगला न तो शून्य है और न ही अगला (सिर का अगला भाग शून्य नहीं है)
    • शीर्ष 1 के आगे :=शीर्ष2 के आगे
    • सिर के आगे2 =अगला (सिर के आगे)
    • head1 :=head1 के आगे और head2 :=head2 के आगे
  • यदि शीर्ष 2 का अगला भाग रिक्त नहीं है
    • शीर्ष 1 के आगे :=शीर्ष2 के आगे
    • head1 :=head1 के आगे
  • head1 के आगे :=head2_beg और head2 का अगला =null
  • रिटर्न हेड

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

उदाहरण

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 oddEvenList(self, head):
      if head == None or head.next ==None:
         return head
      head1=head
      head2,head2_beg= head.next,head.next
      while head2.next!= None and head2.next.next!= None:
         head1.next = head2.next
         head2.next = head2.next.next
         head1 = head1.next
         head2 = head2.next
      if head2.next!=None:
         head1.next = head2.next
         head1 = head1.next
      head1.next = head2_beg
      head2.next = None
      return head
ob1 = Solution()
head = make_list([1,22,13,14,25])
print_list(ob1.oddEvenList(head))

इनपुट

[1,22,13,14,25]

आउटपुट

[1, 13, 25, 22, 14, ]

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

    मान लीजिए कि हमारे पास एक सूची 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 है, इसलिए उनकी अदला-बदली की

  1. पायथन - Kth भी तत्व खोजें

    जब किसी सूची में Kth सम तत्व को खोजना आवश्यक होता है, तो एक सूची समझ और % ऑपरेटर का उपयोग किया जाता है। उदाहरण नीचे उसी का एक प्रदर्शन है - my_list = [14, 63, 28, 32, 18, 99, 13, 61] print("The list is :") print(my_list) K = 3 print("The value of K is :") print(K) my_result =

  1. पायथन में लिंक की गई सूची से m नोड्स के बाद n नोड्स को हटाने का कार्यक्रम

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