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

C ভাষায় লিংকড লিস্ট ব্যবহার করে স্ট্যাক (Stack) ব্যাখ্যা


ডাইনামিক্যালি মেমরি অ্যালোকেট করে স্ট্যাক ওভারফ্লো এবং স্ট্যাক অন্ডারফ্লো এড়ানো যায়।

C প্রোগ্রামিং ভাষায় স্ট্যারের অধীনে gerçekleştirিত অপারেশনগুলো হলো:

  • পুশ (Push)
  • পপ (Pop)

পুশ (Push)

লিংকড লিস্টের বেসিক ইমপ্লিমেন্টেশন নিম্নরূপ:

&item = 10 newnode = (node*) malloc (sizeof (node)); newnode ->data = item; newnode ->link = NULL; newnode ->link = start; start = newnode;

C ভাষায় লিংকড লিস্ট ব্যবহার করে স্ট্যাক (Stack) ব্যাখ্যা

পপ (Pop)

সিনট্যাক্স নিম্নরূপ:

সিনট্যাক্স

if (start = = NULL) printf("Deletion is not possible.List is empty") else{    temp = start;    start = start link;    free (temp); }

প্রোগ্রাম

লিংকড লিস্ট ব্যবহার করে স্ট্যাকের C প্রোগ্রাম:

#include <stdio.h> #include <stdlib.h> struct node{    int info;    struct node *ptr; }*top,*top1,*temp; int topelement(); void push(int data); void pop(); void empty(); void display(); void destroy(); void stack_count(); void create(); int count = 0; void main(){    int no, ch, e;    printf("\n 1 - Push");    printf("\n 2 - Pop");    printf("\n 3 - Top");    printf("\n 4 - Empty");    printf("\n 5 - Exit");    printf("\n 6 - Display");    printf("\n 7 - Stack Count");    printf("\n 8 - Destroy stack");    create();    while (1){       printf("\n Enter choice : ");       scanf("%d", &ch);       switch (ch){          case 1:             printf("Enter element : ");          scanf("%d", &no);          push(no);          break;          case 2:             pop();          break;          case 3:             if (top == NULL)                printf("stack is empty");          else{             e = topelement();             printf("\n Top element : %d", e);          }          break;          case 4:             empty();          break;          case 5:             exit(0);          case 6:             display();          break;          case 7:             stack_count();          break;          case 8:             destroy();          break;             default :          printf(" wrong choice:Try again ");          break;       }    } } //empty stack void create(){    top = NULL; } void stack_count(){    printf("\n no: of elements in stack : %d", count); } //push data void push(int data){    if (top == NULL){       top =(struct node *)malloc(1*sizeof(struct node));       top->ptr = NULL;       top->info = data;    }    else{       temp =(struct node *)malloc(1*sizeof(struct node));       temp->ptr = top;       temp->info = data;       top = temp;    }    count++; } void display(){    top1 = top;    if (top1 == NULL){       printf("empty stack");       return;    }    while (top1 != NULL){       printf("%d ", top1->info);       top1 = top1->ptr;    } } void pop(){    top1 = top;    if (top1 == NULL){       printf("\n error");       return;    }    else       top1 = top1->ptr;       printf("\n Popped value : %d", top->info);       free(top);       top = top1;       count--;    }    int topelement(){       return(top->info);    }    //check stack empty or not    void empty(){       if (top == NULL)          printf("\n empty stack");       else          printf("\n stack not empty with %d values", count);       }       void destroy(){          top1 = top;       while (top1 != NULL){          top1 = top->ptr;          free(top);       top = top1;       top1 = top1->ptr;    }    free(top1);    top = NULL;    printf("\n all are destroyed");    count = 0; }

আউটপুট

উপরোক্ত প্রোগ্রামটি এক্সিকিউট করলে নিচের ফলাফলটি দেখায়:

1 - Push 2 - Pop 3 - Top 4 - Empty 5 - Exit 6 - Display 7 - Stack Count 8 - Destroy stack Enter choice: 1 Enter element: 23 Enter choice: 1 Enter element: 45 Enter choice: 1 Enter element: 56 Enter choice: 2 Popped value: 56 Enter choice: 6 45 23 Enter choice: 8 all are destroyed Enter choice: 6 empty stack Enter choice: 5

  1. C ভাষায় স্ট্যাক ব্যবহার করে এক্সপ্রেশন কনভারশন ব্যাখ্যা

  2. C ভাষায় ক্যারেক্টার অপারেশন ব্যাখ্যা

  3. C-তে লিংকড লিস্ট ব্যবহার করে প্রায়োরিটি কিউ (Priority Queue using Linked List)

  4. সি প্রোগ্রামিং-এ লিংকড লিস্টের বিকল্প নোড প্রিন্ট করা (ইটারেটিভ মেথড)