কম্পিউটার

C++ এ লিঙ্ক করা তালিকার বিপরীতে প্রিন্ট করার একটি আকর্ষণীয় পদ্ধতি


একটি লিঙ্কযুক্ত তালিকা একটি ডেটা কাঠামো যা লিঙ্কযুক্ত আকারে ডেটা উপাদান সংরক্ষণ করে। লিঙ্ক করা তালিকার প্রতিটি নোডে একটি ডেটা উপাদান এবং একটি লিঙ্ক রয়েছে৷

একটি লিঙ্কযুক্ত তালিকার বিপরীত মুদ্রণ একটি সাধারণ সমস্যা যা সমস্যা সমাধানে সমাধান করা প্রয়োজন। সুতরাং, এখানে আমরা c++ প্রোগ্রামিং ভাষায় লিঙ্ক করা তালিকার বিপরীতে প্রিন্ট করার একটি আকর্ষণীয় উপায় শিখব।

সাধারণত একটি বিপরীত লিঙ্কযুক্ত তালিকা প্রিন্ট করার জন্য তালিকার পরিবর্তন বা তালিকার একাধিক ট্রাভার্সিং প্রয়োজন হয় তবে এই পদ্ধতিতে এই জাতীয় কোনও জিনিসের প্রয়োজন হয় না এবং শুধুমাত্র একবার লিঙ্কযুক্ত তালিকাটি অতিক্রম করে৷

এই পদ্ধতির যুক্তি হল স্ট্রিংকে বিপরীতে প্রিন্ট করতে ক্যারেজ রিটার্ন ব্যবহার করা। ক্যারেজ রিটার্ন হল প্রিন্টারকে একটি কমান্ড (প্রদর্শনের ক্ষেত্রে কার্সার) লাইনে অবস্থান ছেড়ে একটি স্ক্রিনের একটি নির্দিষ্ট স্থানে চলে যেতে। এখন, লজিক হল n (তালিকার দৈর্ঘ্য) অগ্রসর করা যা তালিকার t ehe উপাদানগুলি মুদ্রিত করার জন্য স্থান ছেড়ে দেয়। প্রথম উপাদানটি প্রিন্ট করার আগে n -1 স্পেস থাকা উচিত। তারপর দ্বিতীয়টির জন্য n-2 ইত্যাদি।

এখন ধারণাটি ব্যাখ্যা করার জন্য একটি প্রোগ্রাম দেখা যাক,

উদাহরণ

#include<stdio.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
struct Node {
   int data;
   struct Node* next;
};
void printReverse(struct Node** head_ref, int n) ;
void push(struct Node** head_ref, int new_data) ;
int printList(struct Node* head) ;
int main(){
   struct Node* head = NULL;
   push(&head, 2);
   push(&head, 7);
   push(&head, 3);
   push(&head, 5);
   push(&head, 4);
   push(&head, 6);
   printf("Given linked list:\n");
   int n = printList(head);
   printf("\nReversed Linked list:\n");
   printReverse(&head, n);
   return 0;
}
void printReverse(struct Node** head_ref, int n){
   int j = 0;
   struct Node* current = *head_ref;
   while (current != NULL) {
      for (int i = 0; i < 2 * (n - j); i++)
         cout<<" ";
      cout<<current->data<<"\r";
      current = current->next;
      j++;
   }
}
void push(struct Node** head_ref, int new_data){
   struct Node* new_node =
   (struct Node*)malloc(sizeof(struct Node));
   new_node->data = new_data;
   new_node->next = (*head_ref);
   (*head_ref) = new_node;
}
int printList(struct Node* head){
   int i = 0;
   struct Node* temp = head;
   while (temp != NULL) {
      printf("%d ", temp->data);
      temp = temp->next;
      i++;
   }
   return i;
}

আউটপুট

Given linked list:
6 4 5 3 7 2
Reversed Linked list:
2 7 3 5 4 6

  1. C++ এ 2D ম্যাট্রিক্স থেকে একটি লিঙ্ক করা তালিকা তৈরি করুন

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

  3. C++ STL-এ বিপরীত ফাংশন তালিকাভুক্ত করুন

  4. C++ এ পুনরাবৃত্তি ব্যবহার করে লিঙ্ক করা তালিকার বিকল্প নোড প্রিন্ট করুন