
درآمدی بر ساختمان داده در زبان PHP و آشنایی با مفاهیم Stack و Queue
Data Structure به معنی «ساختمان داده» به روشی برای سازماندهی دادهها در حافظهٔ کامپیوتر گفته میشود تا در آینده به راحتی و به طور بهینه بتوان به بازیابی دادهها پرداخت که برای کسب اطلاعات بیشتر میتوانید به مقالهٔ الگوریتم و ساختمان داده چیست؟ مراجعه نمایید.
در زبان برنامهنویسی پیاچپی، بر خلاف برخی از دیگر زبانها همچون جاوا یا سیشارپ، آرایهها بسیار انعطافپذیرند و کاربردهای فراوانی دارند که از آن جمله میتوان به Array ،List ،Hash Table ،Dictionary ،Collection ،Stack ،Queue و حتی Tree اشاره کرد. به گفتهٔ وبسایت رسمی PHP، یک آرایه در این زبان در واقع اصطلاحاً یک Ordered Map است که Map در اینجا ساختاری است که دادهها را از طریق یکسری Key و Value به یکدیگر مرتبط میسازد.
آشنایی با مفهوم Stack
Stack (پُشته) نوعی دیتا استراکچر است و به مجموعهای از چیزها گفته میشود که یکی پس از دیگری قرار میگیرند که اصطلاحاً به آن Last In, First Out یا LIFO هم گفته میشود. به عبارت دیگر، آخرین آیتمی که اضافه میشود همواره اولین آیتمی است که در دسترس خواهد بود.
وَجهتسمیهٔ پُشته به این خاطر است که این دیتا استراکچر همچون تعدادی بشقاب یا کتاب است که روی یکدیگر به صورت یک پُشته قرار گرفتهاند و آخرین بشقاب یا کتابی که روی سایرین قرار میگیرد (Last In) همواره اولین بشقاب یا کتابی است که در دسترس است (First Out) و وقتی پای اِستک به میان میآید، باید با دو مفهوم Push و Pop نیز آشنا شویم. به طور کلی، منظور از Push افزودن یک آیتم روی اِستک مد نظر است و منظور از Pop هم حذف آخرین آیتم افزوده شده به مجموعهٔ آیتمها است. همچنین در نظر داشته باشیم که برای هر اِستکی میتوان یک ماگزیمم ظرفیت در نظر گرفت و این در حالی است که اگر اِستک دیگر جایی نداشته باشد، از اصطلاح Stack Overflow استفاده میشود و چنانچه قصد داشته باشیم آیتمی را از اِستکی حذف کنیم که خالی است، اصطلاحاً گفته میشود Stack Underflow صورت گرفته است.
آشنایی با مفهوم Queue
Queue (صَف) نوعی دیتا استراکچر است که اصطلاحاً First In, First Out یا FIFO است. به عبارت دیگر، همچون صف نانوایی یا صف پمپ بنزین، اولین آیتمی (در دنیای واقعی اولین فرد یا خودرو) که به صَف افزوده میشود، همواره اولین آیتمی است که قابل دسترسی است.
جمعبندی
انعطافپذیری آرایهها به عنوان یکی از انواع دیتا استراکچرها در زبان PHP این امکان را در اختیار دولوپرها گذاشته که تا حد زیادی بینیاز از دیگر انواع دیتا استراکچر شوند. همچنین ساختمان داده (دیتا استراکچر) در اِکستنشن SPL زبان برنامهنویسی پیاچپی به مراتب گستردهتر از آن چیزی است که در این پست مطرح شد به طوری که در این مجموعه کلاسها ما به دیتا استراکچرهای زیر دسترسی خواهیم داشت:
- SplDoublyLinkedList
- SplStack
- SplQueue
- SplHeap
- SplMaxHeap
- SplMinHeap
- SplPriorityQueue
- SplFixedArray
- SplObjectStorage
برای آشنایی بیشتر با موارد فوق، توصیه میکنیم به مدخل Datastructures در سایت رسمی این زبان مراجعه نمایید که با مثال توضیح داده شدهاند.
در پروژههای عملی پیاچپی از چه دیتا استراکچرهایی استفاده نمودهاید و سؤال دیگر هم اینکه آیا انعطافپذیری قابلتوجه آرایهها در این زبان توان رقابت با دیتا استراکچرهای مختلف در زبانهای گوناگون را دارا است؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.