কম্পিউটার টিউটোরিয়াল

স্ট্যাক ব্যবহার করে লিংকড লিস্ট রিভার্স প্রিন্ট করা


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

Input : 10 → 5 → 3 → 1 → 7 → 9 Output: 9 → 7 → 1 → 3 → 5 → 10

এখানে ইউজার স্ট্যাক[০] লোকেশনে টপ পয়েন্ট করে এলিমেন্ট পপ করার পদ্ধতি এবং তারপর স্ট্যাক[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. C প্রোগ্রামে এক্সট্রা স্পেস ছাড়া লিংকড লিস্ট উল্টে প্রিন্ট করা

  4. C++-এ লিংকড লিস্টের אל্টারনেট নোড প্রিন্ট করুন (রিকার্সন ছাড়া)