কম্পিউটার

সন্নিবেশ বাছাই তালিকা C++


ধরুন আমাদের একটি লিঙ্কযুক্ত তালিকা আছে, আমাদের এই তালিকায় সন্নিবেশ বাছাই করতে হবে। তাই যদি তালিকাটি [9,45,23,71,80,55] এর মত হয় তবে সাজানো তালিকা হল [9,23,45,55,71,80]।

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

  • ডামি :=কিছু র্যান্ডম মান সহ নতুন নোড

  • নোড :=দেওয়া তালিকা

  • যখন নোড শূন্য নয়,

    • newNode =নোডের পরের, dummyHead :=ডামির পরের, prevDummyHead :=ডামি

    • যদিও সত্য -

      • ডামিহেড উপস্থিত না থাকলে, ডামিহেডের মান> নোডের মান

        • নোডের পরের:=ডামিহেড

        • prevDummyHead এর পরের :=নোড

        • লুপ ভাঙ্গুন

      • prevDummyHead :=dymmyHead, এবং dummyHead =ডামি হেডের পাশে

    • node :=nextNode

  • ডামির পরের রিটার্ন

উদাহরণ

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

class Solution {
   public:
   ListNode* insertionSortList(ListNode* a) {
      ListNode* dummy = new ListNode(-1);
      ListNode* node = a;
      ListNode* nextNode;
      ListNode* dummyHead;
      ListNode* prevDummyHead;
      while(node != NULL){
         nextNode = node->next;
         dummyHead = dummy->next;
         prevDummyHead = dummy;
         while(1){
            if(!dummyHead || dummyHead->val > node->val){
               node->next = dummyHead;
               prevDummyHead->next = node;
               //cout << prevDummyHead->val << " " << node->val << endl;
               break;
            }
         }
         prevDummyHead = dummyHead;
         dummyHead = dummyHead->next;
      }
      node = nextNode;
   }
   return dummy->next;
}

ইনপুট

[9,45,23,71,80,55]

আউটপুট

[9,23,45,55,71,80]

  1. C++ এ বহুস্তরের লিঙ্কযুক্ত তালিকা সমতল করুন

  2. C++ এ স্ট্র্যান্ড সাজান

  3. সন্নিবেশ সাজানোর জন্য C++ প্রোগ্রাম

  4. C# এ সন্নিবেশ বাছাই