কম্পিউটার

স্ট্যাক ব্যবহার করে একটি লিঙ্ক করা তালিকা বিপরীত মুদ্রণ করুন


একটি লিঙ্কযুক্ত তালিকা প্রোগ্রামের সাথে দেওয়া হলে স্ট্যাক ডেটা স্ট্রাকচার ব্যবহার করে শেষ থেকে শুরু করে সামনের দিকে তালিকাটি প্রিন্ট করতে হবে

Input : 10 -> 5 -> 3 -> 1 -> 7 -> 9
Output: 9 -> 7 -> 1 -> 3 -> 5 -> 10

এখানে ব্যবহারকারী স্ট্যাক[0] অবস্থানে স্ট্যাক পয়েন্টিং টপ থেকে এবং স্ট্যাক[n] এলিমেন্ট পর্যন্ত যাওয়ার চেয়ে পপিং উপাদানের পদ্ধতি ব্যবহার করতে পারে

অ্যালগরিদম

START
Step 1 -> create structure Linked_list
   Declare int data
   Declare struct linked_list *next
End
Step 2 -> declare int stack[30], top = -1
Step 3 -> declare struct linked_list* head = NULL
Step 4 -> create function int printfromstack(int stack[])
   Loop While top>=0
   Print stack[--top]
End
Step 5 -> create function int push(struct linked_list** head, int n)
   declare struct linked_list* newnode = (struct linked_list*)malloc(sizeof(struct linked_list))
   set newnode->data = n
   set newnode->next = (*head)
   set (*head) = newnode
step 6 -> create function int intostack(struct linked_list* head)
   Loop While head!=NULL
      Print head->data
   Set stack[++top] = head->data
   Set head = head->next
   End
End
Step 7 -> goto main()
   Call push(&head, 10)
   Call push(&head, 20)
   Call push(&head, 30)
   Call push(&head, 40)
   Call intostack(head)
   Call printfromstack(stack)
STOP

উদাহরণ

#include <stdio.h>
#include <stdlib.h>
struct linked_list {
   int data;
   struct linked_list *next;
};
int stack[30], top = -1;
struct linked_list* head = NULL;
int printfromstack(int stack[]) {
   printf("\nStack:\n");
   while(top>=0) {
      printf("%d ", stack[top--]);
   }
}
int push(struct linked_list** head, int n) {
   struct linked_list* newnode = (struct linked_list*)malloc(sizeof(struct linked_list));
   newnode->data = n;
   newnode->next = (*head);
   (*head) = newnode;
}
int intostack(struct linked_list* head) {
   printf("Linked list:\n");
   while(head!=NULL) {
      printf("%d ", head->data);
      stack[++top] = head->data;
      head = head->next;
   }
}
int main(int argc, char const *argv[]) {
   push(&head, 10);
   push(&head, 20);
   push(&head, 30);
   push(&head, 40);
   intostack(head);
   printfromstack(stack);
   return 0;
}

আউটপুট

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

Linked list:
40 30 20 10
Stack:
10 20 30 40

  1. লিংকড লিস্টের বিকল্প নোড (পুনরাবৃত্ত পদ্ধতি) সি ভাষায় প্রিন্ট করুন

  2. প্রকৃতপক্ষে সি ভাষায় বিপরীত না করে একটি লিঙ্কযুক্ত তালিকার বিপরীত মুদ্রণ করুন

  3. সি প্রোগ্রামে অতিরিক্ত স্থান এবং পরিবর্তন ছাড়াই লিঙ্কযুক্ত তালিকার বিপরীত মুদ্রণ করুন।

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