সিংলি লিঙ্কড লিস্ট একটি ডেটা স্ট্রাকচারের প্রকার যা নোড দ্বারা তৈরি হয় যা সেলফ-রেফারেনশিয়াল স্ট্রাকচার ব্যবহার করে তৈরি করা হয়। এই নোডগুলো দুটি অংশ ধারণ করে: ডেটা এবং পরবর্তী লিস্ট নোডের রেফারেন্স। প্রথম লিস্ট নোডের রেফারেন্স মাত্রই পুরো লিঙ্কড লিস্ট অ্যাক্সেস করার জন্য পর্যাপ্ত। এটিকে হেড (head) বলা হয়। লিস্টের শেষ নোডটি কাকেই পয়েন্ট করে না তাই সেটি সেই অংশে NULL সংরক্ষণ করে।
সিংলি লিঙ্কড লিস্ট বাস্তবায়ন করার একটি প্রোগ্রাম নিচে দেওয়া হলো:
উদাহরণ
#include <iostream>
using namespace std;
struct Node {
int data;
struct Node *next;
};
struct Node* head = NULL;
void insert(int new_data) {
struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = head;
head = new_node;
}
void display() {
struct Node* ptr;
ptr = head;
while (ptr != NULL) {
cout << ptr->data << " ";
ptr = ptr->next;
}
}
int main() {
insert(3);
insert(1);
insert(7);
insert(2);
insert(9);
cout << "The linked list is: ";
display();
return 0;
}
আউটপুট
The linked list is: 9 2 7 1 3
উপরোক্ত প্রোগ্রামে, Node স্ট্রাকচারটি লিঙ্কড লিস্টের নোড গঠন করে। এতে ডেটা এবং পরবর্তী লিঙ্কড লিস্ট নোডের পয়েন্টার থাকে। এটি নিচে দেওয়া হলো:
struct Node {
int data;
struct Node *next;
};
insert() ফাংশনটি লিঙ্কড লিস্টের শুরুতে ডেটা ইনসার্ট করে। এটি একটি new_node তৈরি করে এবং নম্বরটি new_node-এর ডেটা ফিল্ডে ইনসার্ট করে। তারপর new_node head-কে পয়েন্ট করে। অবশেষে head হয় new_node অর্থাৎ লিঙ্কড লিস্ট সেখান থেকে শুরু হয়। এটি নিচে দেওয়া হলো:
void insert(int new_data) {
struct Node* new_node = (struct Node*) malloc(sizeof(struct Node));
new_node->data = new_data;
new_node->next = head;
head = new_node;
}
display() ফাংশনটি পুরো লিঙ্কড লিস্ট প্রদর্শন করে। প্রথমে ptr head-কে পয়েন্ট করে। তারপর এটি liên tục পরবর্তী নোডে ফরওয়ার্ড করা হয় যতক্ষণ না নোডগুলোর সমস্ত ডেটা ভ্যালু প্রিন্ট হয়। এটি নিচে দেওয়া হলো:
void display() {
struct Node* ptr;
ptr = head;
while (ptr != NULL) {
cout << ptr->data << " ";
ptr = ptr->next;
}
}
main() ফাংশনে, প্রথমে বিভিন্ন মান insert() কল করে লিঙ্কড লিস্টে ইনসার্ট করা হয়। তারপর লিঙ্কড লিস্টটি প্রদর্শন করা হয়। এটি নিচে দেওয়া হলো:
int main() {
insert(3);
insert(1);
insert(7);
insert(2);
insert(9);
cout << "The linked list is: ";
display();
return 0;
}