Nima Mohamadian
Nima Mohamadian
خواندن ۲ دقیقه·۵ سال پیش

پشته یا استک در جاواسکریپت

یکی از تئوری های بنیادی ساختار داده، Stack هست. پشته یا استک رو خیلی ساده میشه به یه سری کتاب که روی میز چیده شده تعبیر کرد. مسأله‌ای که توی صف و استک و ... مهم هست، نحوه ورود و خروج و مدیریت اعضا هست. تو این نوشته می‌خواهم یک پشته رو با جاواسکریپت پیاده سازی کنم.

پشته یا استک
پشته یا استک

تابع زیر رو در نظر بگیرید:

تابع  Stack و مقدار دهی count و storage برای پشته
تابع  Stack و مقدار دهی count و storage برای پشته

دو مقدار count و storage رو برای این تابع در نظر گرفتیم.
count تعداد اعضا و storage هم محل قرارگیری اعضاست.

به این تصویر دقت کنید:

اولین عضو خروجی ، آخرین عضو ورودی در استک است
اولین عضو خروجی ، آخرین عضو ورودی در استک است

در یک استک، آخرین عضو ورودی - اولین عضو خروجی هست.

نحوه قرار گرفتن و خارج شدن اعضا در استک
نحوه قرار گرفتن و خارج شدن اعضا در استک

این شکل نحوه قرار گرفتن آیتم یا عضو در استک رو نشون میده. متد push برای قرار دادن عضو و متد pop برای خارج کردن عضو از استک به کار میره. می‌خواهیم متدهای مورد نیازمون رو توی Stack که ساختیم پیاده سازی کنیم. اول از همه متدهای push و pop :

پیاده سازی متدهای push و pop در استک
پیاده سازی متدهای push و pop در استک

متد push : تابعی که مقداری رو در ورودی می‌گیره و اون رو توی storage ذخیره می‌کنه. مقدار count یک عدد افزایش پیدا می‌کنه.

متد pop : اول چک می‌کنه استک ما عضوی داره یا نه؟ اگر عضوی نداشت، مقدار undefined رو برگردونه و در غیر این صورت، از count یکی کم میکنه و آخرین عضو storage رو می‌گیره و ازش حذف میکنه.در انتها اون عضو حذف شده رو return می‌کنه ( از خصوصیات pop همین هست که عضو حذف شده رو بر می‌گردونه)

به دوتا متد دیگه هم نیاز داریم، بریم پیاده سازی کنیم:

پیاده سازی متدهای size & peek در استک
پیاده سازی متدهای size & peek در استک

متد size‌ : مقدار count رو برمی‌گردونه و تعداد اعضای پشته رو نشون میده.

متد peek : آخرین عضو پشته رو برمی‌گردونه ( بر خلاف pop تاثیری توی اعضای storage و پشته نداره)

خوب استک ما کامل شد و متدهای لازم رو پیاده کردیم:

پیاده سازی استک به همراه ۴ تا متد push , pop , size, peek
پیاده سازی استک به همراه ۴ تا متد push , pop , size, peek

⚠️ اگه حس می‌کنید با این کدها راحت نیستید کافیه اون هارو خودتون پیاده سازی کنید. هر چند که این پیاده سازی الزاما بهترین پیاده سازی نیست و شما می‌‌تونید اون رو بهتر کنید.

یکبار دیگه به این تصویر دقت کنید. می‌خواهیم همین کار رو با کدی که زدیم پیاده کنیم.

مراحلی که می‌خواهیم انجام بدیم
مراحلی که می‌خواهیم انجام بدیم

کارهایی که می‌خواهیم انجام بدیم :
اول یک پشته می‌سازیم
عدد ۱ رو توش push می‌کنیم
عدد ۲ رو push می‌کنیم
آخرین عضو رو pop ‌می کنیم

ساختن یک نمونه از استک و قرار دادن اضا و کار با متد های push & pop  & peek
ساختن یک نمونه از استک و قرار دادن اضا و کار با متد های push & pop & peek



سایر نوشته های من در ویرگول:

http://vrgl.ir/MAllp
http://vrgl.ir/lpDIw
http://vrgl.ir/BwPRq



Follow me on social media
Telegram
Facebook
Twitter
Linkedin
Virgool
برنامه نویسیجاواسکریپتjavascriptاستک
توسعه دهنده جاواسکریپت
شاید از این پست‌ها خوشتان بیاید