লিঙ্কযুক্ত তালিকাগুলি গতিশীল মেমরি বরাদ্দ ব্যবহার করে যেমন সেগুলি সেই অনুযায়ী বৃদ্ধি পায় এবং সঙ্কুচিত হয়। তারা নোড একটি সংগ্রহ হিসাবে সংজ্ঞায়িত করা হয়. এখানে, নোডের দুটি অংশ রয়েছে, যা হল ডেটা এবং লিঙ্ক। ডেটা, লিঙ্ক এবং লিঙ্কযুক্ত তালিকার উপস্থাপনা নীচে দেওয়া হল -
লিঙ্ক করা তালিকার প্রকারগুলি
লিঙ্ক করা তালিকার চার প্রকার রয়েছে, যা নিম্নরূপ -
- একক / এককভাবে লিঙ্ক করা তালিকা
- দ্বিগুণ / দ্বিগুণ লিঙ্কযুক্ত তালিকা
- বৃত্তাকার একক লিঙ্ক তালিকা
- বৃত্তাকার ডবল লিঙ্ক তালিকা
পুনরাবৃত্ত পদ্ধতি ব্যবহার করে আমরা লিঙ্কযুক্ত তালিকার দৈর্ঘ্য খুঁজে বের করতে যে যুক্তিটি ব্যবহার করেছি তা হল −
int length(node *temp){ if(temp==NULL) return l; else{ l=l+1; length(temp->next); } }
প্রোগ্রাম
লিঙ্ক করা তালিকার দৈর্ঘ্য খুঁজে বের করার জন্য সি প্রোগ্রামটি নিচে দেওয়া হল −
#include <stdio.h> #include <stdlib.h> typedef struct linklist{ int data; struct linklist *next; }node; int l=0; int main(){ node *head=NULL,*temp,*temp1; int len,choice,count=0,key; do{ temp=(node *)malloc(sizeof(node)); if(temp!=NULL){ printf("\nenter the elements in a list : "); scanf("%d",&temp->data); temp->next=NULL; if(head==NULL){ head=temp; }else{ temp1=head; while(temp1->next!=NULL){ temp1=temp1->next; } temp1->next=temp; } }else{ printf("\nMemory is full"); } printf("\npress 1 to enter data into list: "); scanf("%d",&choice); }while(choice==1); len=length(head); printf("The list has %d no of nodes",l); return 0; } //recursive function to find length int length(node *temp){ if(temp==NULL) return l; else{ l=l+1; length(temp->next); } }
আউটপুট
যখন উপরের প্রোগ্রামটি কার্যকর করা হয়, তখন এটি নিম্নলিখিত ফলাফল তৈরি করে -
Run 1: enter the elements in a list: 3 press 1 to enter data into list: 1 enter the elements in a list: 56 press 1 to enter data into list: 1 enter the elements in a list: 56 press 1 to enter data into list: 0 The list has 3 no of nodes Run 2: enter the elements in a list: 12 press 1 to enter data into list: 1 enter the elements in a list: 45 press 1 to enter data into list: 0 The list has 2 no of nodes