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

233

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


১. Linked List

Linked List একটি ডেটা স্ট্রাকচার যেখানে প্রতিটি উপাদান (নোড) একটি ডেটা এবং পরবর্তী নোডের রেফারেন্স (পয়েন্টার) ধারণ করে। এটি একটি সিকুয়েন্স্যাল ডেটা স্ট্রাকচার, কিন্তু প্রতিটি নোড একে অপরের সাথে সম্পর্কিত থাকে।

Linked List এর গঠন:

প্রতিটি নোডের মধ্যে দুটি অংশ থাকে:

  • ডেটা: নোডের মূল মান।
  • পয়েন্টার: পরবর্তী নোডের ঠিকানা।

প্যাসক্যাল কোড:

program LinkedListExample;

type
  Node = ^NodeRec;
  NodeRec = record
    data: Integer;
    next: Node;
  end;

var
  head: Node;

procedure InsertFront(var head: Node; value: Integer);
var
  newNode: Node;
begin
  New(newNode);  { নতুন নোড তৈরি }
  newNode^.data := value;
  newNode^.next := head;  { পরবর্তী নোডকে প্রাক্তন হেডের রেফারেন্সে সংযুক্ত করুন }
  head := newNode;  { হেড পয়েন্টার আপডেট করুন }
end;

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

begin
  head := nil;
  InsertFront(head, 10);
  InsertFront(head, 20);
  InsertFront(head, 30);
  
  writeln('Linked List:');
  PrintList(head);
end.

আউটপুট:

Linked List:
30
20
10

এখানে, InsertFront ফাংশনটি লিঙ্কড লিস্টের শুরুতে নতুন নোড যোগ করে এবং PrintList ফাংশনটি লিঙ্কড লিস্টের সমস্ত উপাদান প্রিন্ট করে।


২. Stack

Stack একটি লিনিয়ার ডেটা স্ট্রাকচার যা LIFO (Last In, First Out) পদ্ধতিতে কাজ করে। অর্থাৎ, সর্বশেষে ঢোকানো উপাদানটি প্রথমে বের হবে।

প্যাসক্যাল কোড:

program StackExample;

type
  Stack = record
    arr: array[1..10] of Integer;
    top: Integer;
  end;

procedure InitStack(var s: Stack);
begin
  s.top := 0;  { স্ট্যাকটি শূন্য অবস্থায় শুরু করুন }
end;

procedure Push(var s: Stack; value: Integer);
begin
  if s.top < 10 then
  begin
    s.top := s.top + 1;
    s.arr[s.top] := value;
  end
  else
    writeln('Stack is full');
end;

function Pop(var s: Stack): Integer;
begin
  if s.top > 0 then
  begin
    Pop := s.arr[s.top];
    s.top := s.top - 1;
  end
  else
  begin
    writeln('Stack is empty');
    Pop := -1;
  end;
end;

begin
  var myStack: Stack;
  InitStack(myStack);
  
  Push(myStack, 10);
  Push(myStack, 20);
  Push(myStack, 30);
  
  writeln('Popped: ', Pop(myStack));
  writeln('Popped: ', Pop(myStack));
  writeln('Popped: ', Pop(myStack));
  writeln('Popped: ', Pop(myStack));  { Stack is empty }
end.

আউটপুট:

Popped: 30
Popped: 20
Popped: 10
Stack is empty

এখানে, Push ফাংশনটি স্ট্যাকে নতুন উপাদান যোগ করে এবং Pop ফাংশনটি সর্বশেষ উপাদানটি সরিয়ে নেয় (LIFO অনুযায়ী)।


৩. Queue

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

প্যাসক্যাল কোড:

program QueueExample;

type
  Queue = record
    arr: array[1..10] of Integer;
    front, rear: Integer;
  end;

procedure InitQueue(var q: Queue);
begin
  q.front := 0;
  q.rear := 0;
end;

procedure Enqueue(var q: Queue; value: Integer);
begin
  if q.rear < 10 then
  begin
    q.rear := q.rear + 1;
    q.arr[q.rear] := value;
  end
  else
    writeln('Queue is full');
end;

function Dequeue(var q: Queue): Integer;
begin
  if q.front < q.rear then
  begin
    q.front := q.front + 1;
    Dequeue := q.arr[q.front];
  end
  else
  begin
    writeln('Queue is empty');
    Dequeue := -1;
  end;
end;

begin
  var myQueue: Queue;
  InitQueue(myQueue);
  
  Enqueue(myQueue, 10);
  Enqueue(myQueue, 20);
  Enqueue(myQueue, 30);
  
  writeln('Dequeued: ', Dequeue(myQueue));
  writeln('Dequeued: ', Dequeue(myQueue));
  writeln('Dequeued: ', Dequeue(myQueue));
  writeln('Dequeued: ', Dequeue(myQueue));  { Queue is empty }
end.

আউটপুট:

Dequeued: 10
Dequeued: 20
Dequeued: 30
Queue is empty

এখানে, Enqueue ফাংশনটি কিউতে নতুন উপাদান যোগ করে এবং Dequeue ফাংশনটি প্রথম উপাদানটি সরিয়ে নেয় (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...