একটি সিঙ্গলি লিঙ্কড লিস্ট দেওয়া আছে। প্রতিটি নোডের ডেটা ভ্যালু উল্টো (রিভার্স) করে লিস্ট আপডেট করতে হবে।
উদাহরণ
ইনপুট লিস্ট: 34 → 12 → 89 → 56 → 72
আউটপুট লিস্ট: 43 → 21 → 98 → 65 → 27
পদ্ধতি
- struct Node { int data; struct Node* next; }।
- insertNode() দিয়ে নোড তৈরি।
- reverseValue() ফাংশনটি একটি সংখ্যার ডিজিটগুলো উল্টো করে (123 → 321)।
- reverseLinkedListElements() দিয়ে পুরো লিস্ট ট্রাভার্স করে প্রতিটি নোডের ডেটা রিভার্স করা হয়।
C প্রোগ্রাম উদাহরণ
#include <stdio.h>
#include <stdlib.h>
struct Node { int data; struct Node* next; };
struct Node* insertNode(int key) {
struct Node* temp = (struct Node*)malloc(sizeof(struct Node));
temp->data = key; temp->next = NULL; return temp;
}
int reverseValue(int number) {
int rev = 0, rem;
while (number != 0) {
rem = number % 10;
rev = rev * 10 + rem;
number /= 10;
}
return rev;
}
void reverseLinkedListElements(struct Node* node) {
if (!node) return;
while (node) {
node->data = reverseValue(node->data);
node = node->next;
}
}
void printLinkedList(struct Node* node) {
while (node) { printf("%d ", node->data); node = node->next; }
}
int main() {
struct Node* head = insertNode(34);
head->next = insertNode(12);
head->next->next = insertNode(89);
head->next->next->next = insertNode(56);
head->next->next->next->next = insertNode(72);
printf("Original: "); printLinkedList(head);
reverseLinkedListElements(head);
printf("\nReversed: "); printLinkedList(head);
return 0;
}
আউটপুট
Original: 34 12 89 56 72 Reversed: 43 21 98 65 27