Computer Programming Linked Lists, Stacks, এবং Queues তৈরি করা গাইড ও নোট

179

প্যাসক্যাল প্রোগ্রামিং ভাষায় ডেটা স্ট্রাকচারগুলি (যেমন Linked Lists, Stacks, এবং Queues) তৈরি এবং পরিচালনা করতে হলে আমাদের মৌলিক ধারণাগুলি বুঝতে হবে। এই স্ট্রাকচারগুলি প্রোগ্রামিংয়ের গুরুত্বপূর্ণ অংশ এবং তা বিভিন্ন অ্যাপ্লিকেশন, যেমন ডেটা ম্যানিপুলেশন এবং অ্যালগরিদমে ব্যবহৃত হয়।

এখানে আমরা Linked List, Stack, এবং Queue তৈরি করার উদাহরণ দেখব।


১. Linked List তৈরি করা

Linked List হলো একটি ডেটা স্ট্রাকচার যা একাধিক ডেটা এলিমেন্ট ধারণ করে, যাদের মধ্যে প্রতিটি এলিমেন্টের একটি পয়েন্টার (link) থাকে পরবর্তী এলিমেন্টের দিকে।

Linked List এর মৌলিক উপাদান:

  • Node: প্রতিটি এলিমেন্ট (data) ধারণকারী অংশ।
  • Head: লিঙ্কড লিস্টের প্রথম এলিমেন্ট।

Linked List তৈরি করার উদাহরণ:

program LinkedListExample;
type
  NodePtr = ^Node;
  Node = record
    data: Integer;
    next: NodePtr;
  end;

var
  head: NodePtr;
  temp: NodePtr;
  
procedure AddNode(value: Integer);
var
  newNode: NodePtr;
begin
  new(newNode);
  newNode^.data := value;
  newNode^.next := nil;
  
  if head = nil then
    head := newNode
  else
  begin
    temp := head;
    while temp^.next <> nil do
      temp := temp^.next;
    temp^.next := newNode;
  end;
end;

procedure PrintList;
var
  temp: NodePtr;
begin
  temp := head;
  while temp <> nil do
  begin
    writeln(temp^.data);
    temp := temp^.next;
  end;
end;

begin
  head := nil;  { Linked List শুরুতে শূন্য }
  
  AddNode(10);
  AddNode(20);
  AddNode(30);
  
  writeln('Linked List এর উপাদানসমূহ:');
  PrintList;
end.

এখানে, আমরা AddNode procedure ব্যবহার করে নতুন নোড যুক্ত করছি এবং PrintList procedure দিয়ে লিস্টের সব এলিমেন্ট প্রিন্ট করছি। এই উদাহরণে, লিঙ্কড লিস্টে তিনটি এলিমেন্ট 10, 20, এবং 30 যোগ করা হয়েছে।


২. Stack তৈরি করা

Stack হলো একটি ডেটা স্ট্রাকচার যেখানে এলিমেন্টগুলি একে অপরের উপর রাখা হয় এবং সর্বশেষ যোগ করা এলিমেন্টটি প্রথমে সরানো হয় (LIFO - Last In, First Out)।

Stack তৈরি করার উদাহরণ:

program StackExample;
type
  StackPtr = ^StackNode;
  StackNode = record
    data: Integer;
    next: StackPtr;
  end;

var
  top: StackPtr;

procedure Push(value: Integer);
var
  newNode: StackPtr;
begin
  new(newNode);
  newNode^.data := value;
  newNode^.next := top;
  top := newNode;
end;

function Pop: Integer;
var
  temp: StackPtr;
begin
  if top = nil then
  begin
    writeln('Stack is empty!');
    exit(0);
  end;
  temp := top;
  Pop := temp^.data;
  top := top^.next;
  dispose(temp);
end;

procedure PrintStack;
begin
  while top <> nil do
  begin
    writeln(Pop);
  end;
end;

begin
  top := nil;  { Stack শুরুতে শূন্য }
  
  Push(10);
  Push(20);
  Push(30);
  
  writeln('Stack এর উপাদানসমূহ:');
  PrintStack;
end.

এই উদাহরণে, Push procedure দ্বারা একটি নতুন এলিমেন্ট স্ট্যাকে যোগ করা হচ্ছে এবং Pop function দ্বারা এলিমেন্টটি স্ট্যাক থেকে সরানো হচ্ছে। স্ট্যাকের উপাদানগুলো LIFO পদ্ধতিতে প্রিন্ট করা হয়েছে।


৩. Queue তৈরি করা

Queue হলো একটি ডেটা স্ট্রাকচার যেখানে এলিমেন্টগুলি FIFO (First In, First Out) পদ্ধতিতে প্রবাহিত হয়। প্রথমে যোগ করা এলিমেন্ট প্রথমে বের হয়।

Queue তৈরি করার উদাহরণ:

program QueueExample;
type
  QueuePtr = ^QueueNode;
  QueueNode = record
    data: Integer;
    next: QueuePtr;
  end;

var
  front, rear: QueuePtr;

procedure Enqueue(value: Integer);
var
  newNode: QueuePtr;
begin
  new(newNode);
  newNode^.data := value;
  newNode^.next := nil;
  
  if front = nil then
    front := newNode
  else
    rear^.next := newNode;
    
  rear := newNode;
end;

function Dequeue: Integer;
var
  temp: QueuePtr;
begin
  if front = nil then
  begin
    writeln('Queue is empty!');
    exit(0);
  end;
  temp := front;
  Dequeue := temp^.data;
  front := front^.next;
  dispose(temp);
end;

procedure PrintQueue;
begin
  while front <> nil do
  begin
    writeln(Dequeue);
  end;
end;

begin
  front := nil;
  rear := nil;
  
  Enqueue(10);
  Enqueue(20);
  Enqueue(30);
  
  writeln('Queue এর উপাদানসমূহ:');
  PrintQueue;
end.

এখানে, Enqueue procedure দ্বারা একটি নতুন এলিমেন্ট কিউতে যোগ করা হচ্ছে এবং Dequeue function দ্বারা প্রথম এলিমেন্টটি কিউ থেকে সরানো হচ্ছে। এই উদাহরণে, কিউে 10, 20, এবং 30 যোগ করা হয়েছে এবং FIFO পদ্ধতিতে আউটপুট দেখানো হচ্ছে।


সারাংশ

  • Linked List: একটি ডায়নামিক ডেটা স্ট্রাকচার যেখানে প্রতিটি নোড পরবর্তী নোডের পয়েন্টার ধারণ করে।
  • Stack: LIFO (Last In, First Out) পদ্ধতিতে কাজ করে, যেখানে সর্বশেষ যোগ করা এলিমেন্ট প্রথমে বের হয়।
  • Queue: FIFO (First In, First Out) পদ্ধতিতে কাজ করে, যেখানে প্রথমে যোগ করা এলিমেন্ট প্রথমে বের হয়।

এই ডেটা স্ট্রাকচারগুলি প্যাসক্যাল প্রোগ্রামে কোডের মাধ্যমে তৈরি ও পরিচালনা করা যায়, যা বিভিন্ন ধরনের অ্যাপ্লিকেশন এবং অ্যালগরিদমে ব্যবহৃত হয়।

Content added By
Promotion

Are you sure to start over?

Loading...