কম্পিউটার

পাইথনে লিঙ্ক করা তালিকার ভিতরের নোডগুলিকে বিপরীত করার জন্য প্রোগ্রাম


ধরুন আমাদের লিঙ্ক করা তালিকা আছে, আমাদেরও দুটি মান আছে i এবং j, আমাদের লিঙ্ক করা তালিকাটিকে i থেকে jth নোডে উল্টাতে হবে। এবং অবশেষে আপডেট করা তালিকা ফিরিয়ে দিন।

সুতরাং, যদি ইনপুট হয় [1,2,3,4,5,6,7,8,9] i =2 j =6, তাহলে আউটপুট হবে [1, 2, 7, 6, 5, 4 , 3, 8, 9,

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:

  • prev_head :=একটি লিঙ্কযুক্ত তালিকা নোড তৈরি করুন যার মান নাল এর মতো এবং যেটি নোডের দিকে নির্দেশ করে
  • prev :=prev_head, curr :=নোড
  • 0 থেকে i পর্যন্ত সমস্ত মানের মাধ্যমে পুনরাবৃত্তি করুন, করুন
    • prev :=curr, curr :=curr এর পরবর্তী
  • rev_before :=prev, rev_end :=curr
  • 0 থেকে (j - i) পর্যন্ত সমস্ত মানের মাধ্যমে পুনরাবৃত্তি করুন, করুন
    • tmp :=curr এর পরবর্তী
    • curr এর পরের :=prev
    • prev, curr :=curr, tmp
  • rev_before এর পরের :=prev, rev_end.next :=curr
  • prev_head এর পরের রিটার্ন

আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:

উদাহরণ

ক্লাস লিস্টনোড:def __init__(self, data, next =None):self.val =data self.next =nextdef make_list(elements):head =ListNode(elements[0]) উপাদানের উপাদানের জন্য[1:] :ptr =head while ptr.next:ptr =ptr.next ptr.next =ListNode(element) রিটার্ন headdef print_list(head):ptr =head print('[', end ="") যখন ptr:print(ptr. val, end =", ") ptr =ptr.next print(']') ক্লাস সমাধান:def solve(self, node, i, j):prev_head =ListNode(None, node) prev, curr =prev_head, নোড এর জন্য _ পরিসরে(i):prev, curr =curr, curr.next rev_before, rev_end =prev, _ এর জন্য curr রেঞ্জ(j - i + 1):tmp =curr.next curr.next =আগের আগের, curr =curr , tmp rev_before.next, rev_end.next =prev, curr রিটার্ন prev_head.nextob =সমাধান()head =make_list([1,2,3,4,5,6,7,8,9])i =2j =6print_list (ob.solve(head, i, j))

ইনপুট

<প্রে>[1,2,3,4,5,6,7,8,9], 2, 6

আউটপুট

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

  1. একটি প্রদত্ত তালিকা বাছাই এবং বিপরীত করার জন্য পাইথন প্রোগ্রাম

  2. পাইথনে লিঙ্ক করা তালিকায় নোড অদলবদল করার জন্য প্রোগ্রাম

  3. পাইথন প্রোগ্রাম তালিকার একটি রেঞ্জ বিপরীত করতে

  4. পাইথনে লিঙ্ক করা তালিকা থেকে m নোডের পরে n নোড মুছে ফেলার প্রোগ্রাম