Map

Map یک ساختار داده کلید-مقدار است که درون خود آرایه‌ای دارد و ایندکس‌ها خروجی‌های تابع Hash هستند و مقادیر در آن ذخیره می‌شوند.

  • Hash Map / Hash Table
    ساختاری که با سرعت بالا کلیدهای map را به یک جدول نگاشت می‌کند.

  • Hash Function
    با استفاده از این تابع، کلید ورودی به یک عدد تبدیل می‌شود که همان ایندکس آرایه است و مقدار مرتبط با آن بازیابی می‌شود.

  • Handling Collisions
    وقتی دو کلید مختلف به یک ایندکس اشاره کنند، با الگوریتم‌هایی مثل chaining حل می‌شود.

  • Time Complexity: O(1)
    به همین دلیل سرعت بسیار بالایی دارد.

  • Initial Capacity
    اگر map ایجاد شود اما مقدار اولیه ندهیم، پیش‌فرض ظرفیت ۸ است.

توضیح فارسی ساختار داده Map

Linked List

لیست پیوندی آرایه‌ای از گره‌هاست که هر گره شامل داده و اشاره‌گری به گره بعدی است.
یک اشاره‌گر Head به اولین گره اشاره می‌کند و اگر لیست خالی باشد، مقدار آن null است.

نکته:
در حلقه‌ها برای پیمایش و به‌روزرسانی، بهتر است مقدار را در یک متغیر موقت بریزیم و روی آن کار کنیم.

مثال Linked List در Go
مثال دیگر Linked List

Stack (LIFO)

داده‌ها به صورتی ذخیره می‌شوند که آخرین داده ذخیره شده، اولین داده بازخوانی شده باشد.

  • Push: افزودن عنصر به بالای پشته
  • Pop: حذف و بازگرداندن عنصر بالای پشته
  • isEmpty: بررسی خالی بودن پشته
  • Top (Peek): بازگرداندن عنصر بالای پشته بدون حذف آن

مثال Stack در Go

Queue (FIFO)

صف، ساختاری است که داده‌هایی که زودتر ذخیره شوند، زودتر خارج می‌شوند.

  • Enqueue(): افزودن عنصر به انتهای صف
  • Dequeue(): حذف و بازگرداندن اولین عنصر صف
  • isEmpty(): بررسی خالی بودن صف
  • Top(): مشاهده اولین عنصر بدون حذف

مثال Queue در Go