কম্পিউটার

C++ এ সাজানো এবং ঘোরানো লিঙ্ক তালিকায় ঘূর্ণন গণনা করুন


আমরা একটি লিঙ্ক তালিকা দেওয়া হয়. তালিকাটি প্রথমে বাছাই করা হয় এবং তারপর নোডের K সংখ্যা দ্বারা ঘোরানো হয়। লক্ষ্য হল K-এর মান খুঁজে বের করা। যদি আমাদের ইনপুট হিসাবে নীচে লিঙ্কযুক্ত তালিকা দেওয়া হয় যা K নোডের সংখ্যা দ্বারা ঘোরানো হয় -

C++ এ সাজানো এবং ঘোরানো লিঙ্ক তালিকায় ঘূর্ণন গণনা করুন

তাহলে আসল হতে হবে −

C++ এ সাজানো এবং ঘোরানো লিঙ্ক তালিকায় ঘূর্ণন গণনা করুন

এবং আমরা দেখতে পাচ্ছি এখানে K হল 2। ইনপুট লিঙ্কড লিস্ট হল মূল সাজানো লিঙ্ক করা তালিকায় 2টি নোডের ঘূর্ণন।

আসুন উদাহরণ দিয়ে বুঝতে পারি।

ইনপুট − তালিকা :5 → 7 → 9 → 1 → 3

আউটপুট

লিঙ্ক করা তালিকার উপাদানগুলি হল:5 7 9 1 3

সাজানো এবং ঘোরানো লিঙ্ক তালিকায় ঘূর্ণনের সংখ্যা হল −3

ব্যাখ্যা − আমরা মূল সাজানো তালিকায় তিনটি ঘূর্ণনের পরে ইনপুট তালিকা পেতে পারি।

1 → 3 → 5 → 7 → 9, আসল9 → 1 → 3 → 5 → 7, ঘূর্ণন 17 → 9 → 1 → 3 → 5, ঘূর্ণন 25 → 7 → 9 → 1 → 3 ঘূর্ণন 3

ইনপুট − তালিকা − 17 → 25 → 62 → 99

আউটপুট

লিঙ্ক করা তালিকার উপাদানগুলি হল − 17 25 62 99

সাজানো এবং ঘোরানো লিঙ্ক তালিকায় ঘূর্ণনের সংখ্যা হল −4

ব্যাখ্যা − আমরা মূল সাজানো তালিকায় চারটি ঘূর্ণনের পরে ইনপুট তালিকা পেতে পারি।

17 → 25 → 62 → 99, আসল99 → 17 → 25 → 62, ঘূর্ণন 162 → 99 → 17 → 25, ঘূর্ণন 225 → 62 → 99 → 17, ঘূর্ণন 317 → 9 → 9 → 4 

নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতিটি নিম্নরূপ

ইনপুট লিঙ্কড তালিকার একটি পয়েন্ট থাকবে যেখানে পরবর্তী নোডটি আগেরটির থেকে ছোট। যদি ইনপুট স্ট্রিংটিও সাজানো হয় তবে এটি আসলটির সম্পূর্ণ-ঘূর্ণন। হেড নোড থেকে শুরু করে, (বর্তমান নোডের ডেটা> হেড নোডের ডেটা) এবং বৃদ্ধির সংখ্যা পর্যন্ত অতিক্রম করুন। যেখানে (বর্তমান নোডের ডেটা <হেড নোডের ডেটা) লুপ ভেঙে দেয়। একটি ইনপুট তালিকা পেতে গণনার মূল তালিকায় অনেকগুলি ঘূর্ণন থাকবে৷

  • একটি ইনপুট তালিকা নিন এবং এতে উপাদান সন্নিবেশ করুন৷

  • ফাংশন insert_node(struct List_Node** head, int data) ডেটা সহ একক-লিঙ্কড তালিকার মাথায় নোড সন্নিবেশ করায়।

  • ফাংশন প্রিন্ট (struct List_Node* node) যখন লুপ ব্যবহার করে মাথা থেকে শুরু করে শেষ পর্যন্ত ইনপুট লিঙ্কড তালিকা প্রিন্ট করে।

  • ফাংশন ঘূর্ণন (struct List_Node* head) লিঙ্ক করা তালিকার প্রধান পয়েন্টার নেয় এবং ইনপুট লিঙ্কযুক্ত তালিকা পেতে মূল লিঙ্কযুক্ত তালিকায় করা ঘূর্ণনের গণনা ফেরত দেয়।

  • 0 হিসাবে প্রাথমিক গণনা নিন।

  • টেম্প ভেরিয়েবলটিকে হেড নোডের ডেটা অংশ হিসাবে নিন।

  • যখন লুপ ব্যবহার করে, লিঙ্ক করা তালিকার শেষ না হওয়া পর্যন্ত অতিক্রম করুন। (মাথা!=শূন্য)।

  • প্রতিটি বর্তমান নোডের ডেটা তাপমাত্রার চেয়ে বেশি হলে সংখ্যা বৃদ্ধি।

  • যদি বর্তমান নোডের ডেটা হেড নোডের ডেটা (টেম্প) থেকে কম হয়। বিরতি,

  • আমরা ঘূর্ণনের সংখ্যা গণনা করব।

  • ফলাফল হিসাবে রিটার্ন গণনা।

উদাহরণ

#include নেমস্পেস ব্যবহার করে std;struct List_Node{int data; struct List_Node* next;};int rotations(struct List_Node* head){int count =0; int temp =head->ডেটা; while (head !=NULL){ if (temp>
 head->data){ break; } গণনা++; head =head->পরবর্তী; } রিটার্ন কাউন্ট;} void insert_node(struct List_Node** head, int data){struct List_Node* new_node =new List_Node; নতুন_নোড->ডেটা =ডেটা; new_node->পরবর্তী =(*মাথা); (*head) =new_node;}void print(struct List_Node* node){ while (node ​​!=NULL){ cout<data<<" "; নোড =নোড->পরবর্তী; }}int main(){ struct List_Node* head =NULL; insert_node(&head, 2); insert_node(&head, 1); insert_node(&head, 18); insert_node(&head, 35); insert_node(&head, 28); cout<<"লিঙ্ক করা তালিকার উপাদানগুলি হল:"; মুদ্রণ (মাথা); cout<<"\nবাছাই করা এবং ঘোরানো লিঙ্কযুক্ত তালিকায় ঘূর্ণনের সংখ্যা হল:"< 

আউটপুট

যদি আমরা উপরের কোডটি চালাই তবে এটি নিম্নলিখিত আউটপুট −

উৎপন্ন করবে
লিঙ্ক করা তালিকার উপাদানগুলি হল:28 35 18 1 2 বাছাই করা এবং ঘোরানো লিঙ্কযুক্ত তালিকায় ঘূর্ণনের সংখ্যা হল:2

  1. একটি বাছাই করা দ্বিগুণ লিঙ্কযুক্ত তালিকায় ট্রিপলেট গণনা করুন যার যোগফল C++ এ একটি প্রদত্ত মানের x এর সমান।

  2. একটি বাছাই করা দ্বিগুণ লিঙ্কযুক্ত তালিকায় ট্রিপলেট গণনা করুন যার পণ্য C++ এ একটি প্রদত্ত মানের x সমান।

  3. C++ এ লিঙ্ক করা তালিকায় ন্যূনতম ফ্রিকোয়েন্সি উপাদান গণনা করুন

  4. C++ এ সার্কুলার লিঙ্ক তালিকায় নোড গণনা করুন