কম্পিউটার

C++ ব্যবহার করে দুটি সাজানো লিঙ্কযুক্ত তালিকা একত্রিত করুন।


সমস্যা বিবৃতি

দেওয়া 2 বাছাই এককভাবে লিঙ্ক তালিকা. প্রদত্ত দুটি সাজানো লিঙ্ক তালিকা একত্রিত করার জন্য একটি ফাংশন লিখুন

তালিকা 1:10->15->17->20 তালিকা 2:5->9->13->19 ফলাফল:5->9->10->13->15->17->19->20 

অ্যালগরিদম

<পূর্ব>1. উভয় তালিকা অতিক্রম করুন 1.1. If list1->data data 1.1.1 add list1->data to new list and increment list1 pointer 1.2 if list2->data data 1.2.1 list2->data add new list2 and increment list2 পয়েন্টার2 উভয় তালিকা শেষ না হওয়া পর্যন্ত পদ্ধতি পুনরাবৃত্তি করুন3. ফলাফলের তালিকা ফেরত দিন

উদাহরণ

#include #include #define SIZE(arr) (sizeof(arr) / sizeof(arr[0])) namespace ব্যবহার করে std;struct node { int data; struct নোড *পরবর্তী;};নোড *createList(int *arr, int n){নোড *head, *p; p =head =new node; head->ডেটা =arr[0]; head->পরবর্তী =NULL; জন্য (int i =1; i পরবর্তী =নতুন নোড; p =p->পরবর্তী; p->ডেটা =arr[i]; p->পরবর্তী =NULL; }রিটার্ন হেড;}অকার্যকর প্রদর্শন তালিকা(নোড *হেড){ যখন (হেড!=শূন্য) { cout <ডেটা <<" "; head =head->পরবর্তী; } cout <data data) { ফলাফল =head1; ফলাফল->পরবর্তী =মার্জ সাজানো তালিকা(head1->পরবর্তী, head2); } else { ফলাফল =head2; ফলাফল->পরবর্তী =একত্রিত করা তালিকা(head1, head2->পরবর্তী); } রিটার্ন ফলাফল;}int main(){int arr1[] ={10, 15, 17, 20}; int arr2[] ={5, 9, 13, 19}; নোড *head1, *head2, *ফলাফল =NULL; head1 =createList(arr1, SIZE(arr1)); head2 =createList(arr2, SIZE(arr1)); cout <<"প্রথম সাজানো তালিকা:" < 

আউটপুট

আপনি যখন উপরের প্রোগ্রামটি কম্পাইল এবং এক্সিকিউট করবেন। এটি নিম্নলিখিত আউটপুট −

তৈরি করে
প্রথম সাজানো তালিকা:10 15 17 20 দ্বিতীয় সাজানো তালিকা:5 9 13 19 চূড়ান্ত বাছাই তালিকা:5 9 10 13 15 17 19 20

  1. C++ এ দুটি লিঙ্ক করা তালিকার ছেদ

  2. C++ এ দ্বৈতভাবে সংযুক্ত সার্কুলার তালিকা

  3. C++ এ দুটি বাইনারি ট্রি মার্জ করুন

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