Map
Map یک ساختار داده کلید-مقدار است که درون خود آرایهای دارد و ایندکسها خروجیهای تابع Hash هستند و مقادیر در آن ذخیره میشوند.
-
Hash Map / Hash Table
ساختاری که با سرعت بالا کلیدهای map را به یک جدول نگاشت میکند. -
Hash Function
با استفاده از این تابع، کلید ورودی به یک عدد تبدیل میشود که همان ایندکس آرایه است و مقدار مرتبط با آن بازیابی میشود. -
Handling Collisions
وقتی دو کلید مختلف به یک ایندکس اشاره کنند، با الگوریتمهایی مثل chaining حل میشود. -
Time Complexity: O(1)
به همین دلیل سرعت بسیار بالایی دارد. -
Initial Capacity
اگر map ایجاد شود اما مقدار اولیه ندهیم، پیشفرض ظرفیت ۸ است.
Linked List
لیست پیوندی آرایهای از گرههاست که هر گره شامل داده و اشارهگری به گره بعدی است.
یک اشارهگر Head به اولین گره اشاره میکند و اگر لیست خالی باشد، مقدار آن null است.
نکته:
در حلقهها برای پیمایش و بهروزرسانی، بهتر است مقدار را در یک متغیر موقت بریزیم و روی آن کار کنیم.
مثال Linked List در Go
مثال دیگر Linked List
Stack (LIFO)
دادهها به صورتی ذخیره میشوند که آخرین داده ذخیره شده، اولین داده بازخوانی شده باشد.
- Push: افزودن عنصر به بالای پشته
- Pop: حذف و بازگرداندن عنصر بالای پشته
- isEmpty: بررسی خالی بودن پشته
- Top (Peek): بازگرداندن عنصر بالای پشته بدون حذف آن
Queue (FIFO)
صف، ساختاری است که دادههایی که زودتر ذخیره شوند، زودتر خارج میشوند.
- Enqueue(): افزودن عنصر به انتهای صف
- Dequeue(): حذف و بازگرداندن اولین عنصر صف
- isEmpty(): بررسی خالی بودن صف
- Top(): مشاهده اولین عنصر بدون حذف