আমাদের প্রদত্ত সূচীতে লিঙ্কযুক্ত তালিকার নোডগুলির ডেটা প্রিন্ট করতে হবে। অ্যারের লিঙ্কযুক্ত তালিকার বিপরীতে সাধারণত সূচক থাকে না তাই আমাদের পুরো লিঙ্কযুক্ত তালিকাটি অতিক্রম করতে হবে এবং যখন আমরা একটি নির্দিষ্ট স্থানে পৌঁছাই তখন ডেটা প্রিন্ট করতে হবে।
ধরা যাক, তালিকায় 29, 34, 43, 56 এবং 88 নোড রয়েছে এবং সূচীগুলির মান 1, 2 এবং 4 এর চেয়ে আউটপুট 34, 43 এবং 88 এই সূচকগুলিতে নোড হবে।
উদাহরণ
Linked list: 29->34->43->56->88 Input: 1 2 4 Output: 34 43 88
লিঙ্ক করা তালিকার উপরের উপস্থাপনায় হলুদ হাইলাইট করা নোডগুলি হল মুদ্রিত নোডগুলি বা নোডগুলি যা একটি নির্দিষ্ট সূচকে রয়েছে৷
এখানে ব্যবহৃত পদ্ধতির মধ্যে একটি পয়েন্টার নেওয়া এবং একটি কাউন্টার ভেরিয়েবল 1 থেকে শুরু করা জড়িত যা যখনই নোডটি অতিক্রম করা হয় তখন বৃদ্ধি পাবে। কাউন্টার কি মান সঙ্গে মিলিত হয়. যখন কাউন্টার ভ্যালুর সাথে কী মিলে যায় তখন নোডের কাঠামোর দিকে নির্দেশকারী পয়েন্টারটি নোডের ডেটা প্রিন্ট করবে এবং পরবর্তী নোডে বর্ধিত হবে এবং তাই নির্দিষ্ট কী-তে আমাদের নোডগুলি দেবে।
নিচের কোডটি প্রদত্ত অ্যালগরিদমের সি বাস্তবায়ন দেখায়।
অ্যালগরিদম
START Step 1 -> create node variable of type structure Declare int data Declare pointer of type node using *next Step 2 -> create struct node* intoList(int data) Create newnode using malloc Set newnode->data = data newnode->next = NULL return newnode step 3 -> Declare function void displayList(struct node *catchead) create struct node *temp IF catchead = NULL Print list is empty return End Set temp = catchead Loop While (temp != NULL) print temp->data set temp = temp->next End Step 4 -> Declare Function int search(int key,struct node *head) Set int index Create struct node *newnode Set index = 0 and newnode = head Loop While (newnode != NULL & newnode->data != key) Set index++ Set newnode = newnode->next End return (newnode != NULL) ? index : -1 step 5 -> In Main() create node using struct node* head = intoList(9) call displayList(head) set index = search(24,head) IF (index >= 0) Print index Else Print not found in the list EndIF STOPতালিকায় পাওয়া যায়
উদাহরণ
#include <stdio.h> #include <stdlib.h> //structure of a node struct node { int data; struct node *next; }; struct node* intoList(int data) { struct node* newnode = (struct node*)malloc(sizeof(struct node)); newnode->data = data; newnode->next = NULL; return newnode; } //funtion to display list void displayList(struct node *catchead) { struct node *temp; if (catchead == NULL) { printf("List is empty.\n"); return; } printf("elements of list are : "); temp = catchead; while (temp != NULL) { printf("%d ", temp->data); temp = temp->next; } printf("\n"); } //function to search element int search(int key,struct node *head) { int index; struct node *newnode; index = 0; newnode = head; while (newnode != NULL && newnode->data != key) { index++; newnode = newnode->next; } return (newnode != NULL) ? index : -1; } int main() { int index; struct node* head = intoList(9); //inserting elements into a list head->next = intoList(76); head->next->next = intoList(13); head->next->next->next = intoList(24); head->next->next->next->next = intoList(55); head->next->next->next->next->next = intoList(109); displayList(head); index = search(24,head); if (index >= 0) printf("%d found at position %d\n", 24, index); else printf("%d not found in the list.\n", 24); index=search(55,head); if (index >= 0) printf("%d found at position %d\n", 55, index); else printf("%d not found in the list.\n", 55); }
আউটপুট
যদি আমরা উপরের প্রোগ্রামটি চালাই তবে এটি নিম্নলিখিত আউটপুট তৈরি করবে।
elements of list are : 9 76 13 24 55 109 24 found at position 3 55 found at position 4