কম্পিউটার

C++ এ k স্থান দ্বারা একটি লিঙ্ক করা তালিকা ঘোরানোর প্রোগ্রাম


ধরুন আমরা একটি লিঙ্ক তালিকা আছে. আমাদের তালিকাটি ডানদিকে k স্থান দ্বারা ঘোরাতে হবে। k এর মান ধনাত্মক হবে। তাই যদি তালিকাটি [1 −> 2 −> 3 −> 4 −> 5 −> NULL], এবং k =2, তাহলে আউটপুট হবে [4 −> 5 −> 1 −> 2 −> 3 −> NULL

আসুন ধাপগুলো দেখি -

  • যদি তালিকাটি খালি থাকে, তাহলে শূন্য ফেরত দিন

  • len :=1

  • tail :=head

    নামে একটি নোড তৈরি করুন
  • যখন লেজের পাশের অংশটি শূন্য নয়

    • লেন 1 দ্বারা বাড়ান

    • পুচ্ছ :=লেজের পাশে

  • লেজের পাশে :=মাথা

  • k :=k mod len

  • নতুন হেড :=শূন্য

  • i এর জন্য :=0 থেকে len − k

    • পুচ্ছ :=লেজের পাশে

  • newHead :=লেজের পাশে

  • লেজের পাশে :=শূন্য

  • রিটার্ন নতুন হেড

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

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;class ListNode{ public:int val; ListNode *পরবর্তী; ListNode(int data){ val =data; পরবর্তী =NULL; }};লিস্টনোড *make_list(ভেক্টর v){ ListNode *head =new ListNode(v[0]); for(int i =1; iপরবর্তী!=NULL){ ptr =ptr->পরবর্তী; } ptr->next =নতুন ListNode(v[i]); } রিটার্ন হেড;} void print_list(ListNode *head){ ListNode *ptr =head; cout <<"["; while(ptr->পরবর্তী){ cout <val <<", "; ptr =ptr->পরবর্তী; } cout <<"]" <পরবর্তী){ len++; tail =tail->পরের; } লেজ->পরবর্তী =মাথা; k % =len; ListNode* newHead =NULL; for(int i =0; i পরের; } newHead =tail->পরের; tail->পরবর্তী =NULL; নতুন হেড ফেরত; }};প্রধান(){সমাধান ob; ভেক্টর v ={1,2,3,4,5,6,7,8,9}; ListNode *head =make_list(v); print_list(ob.rotateRight(head, 4));}

ইনপুট

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

আউটপুট

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

  1. C++ এ দ্বিগুণ লিঙ্কযুক্ত তালিকার আকার খোঁজার প্রোগ্রাম

  2. C++ এ লিঙ্কড লিস্ট ব্যবহার করে দুটি বহুপদ যোগ করা হচ্ছে।

  3. এককভাবে লিঙ্কযুক্ত তালিকা বাস্তবায়নের জন্য সি++ প্রোগ্রাম

  4. C++-এ লিঙ্কযুক্ত তালিকা জোড়ার নোডগুলি অদলবদল করার প্রোগ্রাম