৭-৫ঃ Delete Head from Singly Linked List Recap
এবার আমরা লিঙ্কড লিস্টে হেডে ইন্সারট করা রিকেপ করব।
হেড ডিলিট করা খুবই ইজি। আমরা শুরুতে হেডকে একটি ডিলিট নোড পয়েন্টারে রেখে দিব, কাজ শেষে ডিলিট করে দেওয়ার জন্য। কোডঃ Node *deleteNode = head;

হেড পয়েন্টারকে তার নেক্সটে নিয়ে যাব। কোডঃ head = head->next;

তারপর হেড ডিলিট করে দিব। কোডঃ delete deleteNode;

সম্পূর্ণ কোডঃ
#include <bits/stdc++.h>
using namespace std;
class Node
{
public:
int val;
Node *next;
Node(int val)
{
this->val = val;
this->next = NULL;
}
};
void print_linekd_list(Node *head)
{
Node *tmp = head;
while (tmp != NULL)
{
cout << tmp->val << " ";
tmp = tmp->next;
}
cout << endl;
}
int size(Node *head)
{
Node *tmp = head;
int count = 0;
while (tmp != NULL)
{
count++;
tmp = tmp->next;
}
return count;
}
void delete_node(Node *head, int pos)
{
Node *tmp = head;
for (int i = 1; i <= pos - 1; i++)
{
tmp = tmp->next;
}
Node *deleteNode = tmp->next; // 30
tmp->next = tmp->next->next;
delete deleteNode;
}
void delete_head(Node *&head)
{
Node *deleteNode = head; // শুরুতে হেডকে একটি ডিলিট নোড পয়েন্টারে রেখে দিব, কাজ শেষে ডিলিট করে দেওয়ার জন্য।
head = head->next; // হেড পয়েন্টারকে তার নেক্সটে নিয়ে যাব।
delete deleteNode; // তারপর হেড ডিলিট করে দিব।
}
int main()
{
Node *head = new Node(10);
Node *a = new Node(20);
Node *b = new Node(30);
Node *c = new Node(40);
Node *d = new Node(50);
head->next = a;
a->next = b;
b->next = c;
c->next = d;
print_linekd_list(head);
int pos;
cin >> pos;
if (pos >= size(head))
{
cout << "Invalid" << endl;
}
else if (pos == 0)
{
delete_head(head);
}
else
{
delete_node(head, pos);
}
print_linekd_list(head);
return 0;
}
Last updated