آموزش ساختمان داده از صفر تا صد (با نکات و اصول اولیه)
در این مطلب ساختمان داده را از سطح کاملا مبتدی تا پیشرفته با چند درس رایگان به شما یاد می دهیم. در این مقاله با ساختار داده و انواع آن آشنا می شوید.
ساختار داده چیست؟
ساختار داده نوع ذخیره سازی است که برای ذخیره و سازماندهی داده ها استفاده می شود. راهی برای مرتب سازی داده ها روی کامپیوتر است تا بتوان به طور موثر به آنها دسترسی پیدا کرد و مقادیر آنها را به روزرسانی کرد.
انتخاب ساختار داده مناسب براساس نیاز و پروژه بسیار مهم است. به عنوان مثال برای ذخیره داده ها به صورت متوالی در حافظه می توانید از ساختار داده آرایه (Array) استفاده کنید.
نمایش ساختار داده آرایه
نکته: ساختار داده و انواع داده کمی متفاوت هستند. ساختار داده مجموعه ای از انواع داده است که به ترتیب خاصی مرتب شده اند.
انواع ساختار داده
اساسا ساختارهای داده به دو دسته تقسیم می شوند:
- ساختار داده خطی
- ساختار داده غیر خطی
در ادامه با هر دو نوع به طور مفصل آشنا خواهید شد.
ساختار داده های خطی
عناصر در ساختار داده های خطی به ترتیب پشت سر هم مرتب می شوند. چون ترتیب خاصی دارند بنابراین پیاده سازی آنها آسان است.
با این حال وقتی پیچیدگی برنامه بیشتر شود، ساختار داده خطی به دلیل پیچیدگی های عملیاتی ممکنه بهترین انتخاب نباشد.
ساختارهای داده خطی محبوب عبارتند از:
1- آرایه
عناصر موجود در یک آرایه در حافظه به طور پیوسته و پشت سر هم مرتب شده اند. همه عناصر آرایه از یک نوع هستند و نوع عناصر با زبان برنامه نویسی تعیین می شود.
هر عنصر در آرایه با یک اندیس نشان داده می شود و قابل دسترس است.
2- پشته
در ساختار داده پشته (استک یا Stack) عناصر در اصل به روش LIFO (عنصر اول وارد شده، اول هم خارج می شود) ذخیره می شوند. یعنی ابتدا آخرین عنصر ذخیره شده در پشته حذف می شود.
مانند تعدادی بشقاب روی هم است که در آن آخرین بشقاب روی همه ابتدا برداشته می شود.
در پشته عملیات فقط از یک سر انجام می شود.
3- صف
ساختار داده صف (queue) برخلاف پشته براساس اصل FIFO کار می کند یعنی اولین عنصر ذخیره شده در صف ابتدا حذف خواهد شد.
مانند صفی از افراد برای گرفتن بلیط است که در آن اولین نفر در صف اولین بلیط را دریافت می کند.
در صف، اضافه کردن و حذف عناصر از دو سر انجام می شود.
4- لیست پیوندی
عناصر داده در ساختار داده لیست پیوندی دنباله ای از گره ها هستند که از طریق لینک به هم وصل می شوند. هر گره شامل عنصر داده و آدرس گره بعدی است.
ساختارهای داده غیر خطی
برخلاف ساختارهای داده خطی عناصر موجود در ساختارهای داده غیر خطی ترتیب متوالی ندارند. در عوض به صورت سلسله مراتبی مرتب می شوند که در آن یک عنصر به یک یا چند عنصر دیگر وصل است.
ساختارهای داده غیر خطی به ساختارهای مبتنی بر گراف و درخت تقسیم می شوند.
1- ساختار داده مبتنی بر گراف
در ساختار داده گراف هر گره راس نامیده می شود و هر راس از طریق یال ها به سایر راس ها وصل می شود.
ساختارهای داده محبوب مبتنی بر گراف:
- درخت پوشا و درخت پوشای کمینه
- گراف همبند قوی
- ماتریس مجاورت
- لیست مجاورت
2- ساختار داده مبتنی بر درخت
ساختار داده درخت شبیه گراف شامل مجموعه ای از راس ها و یال ها است. اما در ساختار داده درخت هر راس حداکثر یک یال دارد.
ساختارهای داده محبوب مبتنی بر درخت:
- درخت دودویی
- درخت جستجوی دودویی
- درخت AVL
- درخت B
- درخت B+
- درخت قرمز-سیاه (RBT)
حتما دانلود کنید: آموزش صفر تا صد sql (رایگان)
مقایسه ساختارهای داده خطی و غیر خطی
حالا که با ساختارهای داده خطی و غیر خطی آشنا شدیم، تفاوت های کلی آنها را معرفی می کنیم.
ساختارهای داده خطی | ساختارهای داده غیر خطی |
عناصر داده به ترتیب متوالی و پشت سر هم مرتب می شوند. | عناصر داده ترتیب غیر متوالی و به شیوه سلسله مراتبی مرتب می شوند. |
همه عناصر از یک نوع داده هستند. | عناصر از انواع مختلف داده هستند. |
در طی یک اجرا قابل پیمایش هستند. یعنی اگر از اولین عنصر شروع کنیم همه عناصر به صورت متوالی در یک پیمایش قابل دسترس می باشند. | به چند اجرا نیاز دارند. یعنی اگر از اولین عنصر شروع کنیم ممکنه نتوانیم به همه عناصر در یک پیمایش دسترسی پیدا کنیم. |
از حافظه به طور موثر استفاده نمی کنند. | ساختارهای مختلف براساس نیاز به حافظه از روش های مختلف و موثر استفاده می کنند. |
پیچیدگی زمانی با تعداد داده ها افزایش می یابد. | پیچیدگی زمانی ثابت می ماند. |
مثل: آرایه، پشته، صف | مثل: درخت، گراف، نقشه |
شناخت ساختارهای داده به شما کمک می کند تا عملکرد هر ساختار داده را درک کنید و بر اساس آن می توانید ساختارهای داده مناسب را برای پروژه خود انتخاب کنید. علاوه بر این روی کدنویسی و استفاده موثر از حافظه نیز تاثیرگذار است.
این مبانی و اصول اولیه خییلی مهم هستن
تا اینجای کار می دانید که ساختمان داده یکی از مباحث پایهای و مهم در علوم کامپیوتر است که به سازماندهی و مدیریت دادهها در برنامهنویسی میپردازد. درک صحیح از ساختمان دادهها به شما کمک میکند تا برنامههایی کارآمدتر و بهینهتر بنویسید. در این قسمت مقاله هم به بررسی مفاهیم پایهای و انواع ساختمان دادهها میپردازیم.
۱. مفاهیم پایهای
-
داده (Data): اطلاعات خامی که باید پردازش شوند.
-
ساختمان داده (Data Structure): روشی برای سازماندهی و ذخیرهسازی دادهها به گونهای که دسترسی و عملیات روی آنها بهینه باشد.
-
الگوریتم (Algorithm): مجموعهای از دستورالعملها برای انجام یک کار خاص.
۲. انواع ساختمان دادهها
ساختمان دادهها به دو دسته اصلی تقسیم میشوند:
الف. ساختمان دادههای خطی (Linear Data Structures)
در این نوع، دادهها به صورت متوالی و پشت سر هم قرار میگیرند.
3 مهارت برتر مهندسان کامپیوتر! بدون کلاس، سرعت 2 برابر، ماندگاری 3 برابر، پولسازی عالی با هک، متلب و برنامه نویسی... دانلود:
۱. آرایه (Array):
-
مجموعهای از عناصر همنوع که در کنار هم در حافظه ذخیره میشوند.
-
دسترسی به عناصر با استفاده از اندیس (Index) انجام میشود.
-
مزیت: دسترسی سریع به عناصر با استفاده از اندیس.
-
معایب: اندازه ثابت و هزینه بالای درج و حذف.
۲. لیست پیوندی (Linked List):
-
مجموعهای از گرهها (Nodes) که هر گره شامل داده و اشارهگر به گره بعدی است.
-
انواع: لیست پیوندی یکطرفه، دوطرفه و حلقوی.
-
مزیت: انعطافپذیری در درج و حذف.
-
معایب: دسترسی کند به عناصر.
۳. پشته (Stack):
-
ساختمان دادهای با رفتار LIFO (Last In, First Out).
-
عملیات اصلی: Push (اضافه کردن) و Pop (حذف کردن).
-
کاربرد: مدیریت فراخوانی توابع، undo عملیات.
۴. صف (Queue):
-
ساختمان دادهای با رفتار FIFO (First In, First Out).
-
عملیات اصلی: Enqueue (اضافه کردن) و Dequeue (حذف کردن).
-
انواع: صف معمولی، صف دوطرفه (Deque)، صف اولویتدار (Priority Queue).
-
کاربرد: مدیریت فرآیندها، سیستمهای زمانبندی.
ب. ساختمان دادههای غیرخطی (Non-linear Data Structures)
در این نوع، دادهها به صورت سلسلهمراتبی یا شبکهای سازماندهی میشوند.
۱. درخت (Tree):
-
ساختاری سلسلهمراتبی با یک ریشه (Root) و گرههای فرزند.
-
انواع: درخت دودویی (Binary Tree)، درخت جستجوی دودویی (BST)، درخت AVL، درخت قرمز-سیاه.
-
کاربرد: پایگاههای داده، سیستمهای فایل.
۲. گراف (Graph):
-
مجموعهای از گرهها (رئوس) و یالها (Edges) که گرهها را به هم متصل میکنند.
-
انواع: گراف جهتدار (Directed) و بدون جهت (Undirected).
-
کاربرد: شبکههای اجتماعی، مسیریابی.
۳. عملیات اصلی روی ساختمان دادهها
-
درج (Insertion): اضافه کردن یک عنصر جدید.
-
حذف (Deletion): حذف یک عنصر موجود.
-
جستجو (Search): پیدا کردن یک عنصر خاص.
-
پیمایش (Traversal): دسترسی به تمام عناصر به ترتیب خاص.
-
مرتبسازی (Sorting): چیدمان عناصر به ترتیب خاص.
۴. انتخاب ساختمان داده مناسب
انتخاب ساختمان داده مناسب به نیازهای برنامه بستگی دارد. عواملی مانند سرعت دسترسی، سرعت درج و حذف، و مصرف حافظه باید در نظر گرفته شوند.
۵. مثالهای کاربردی
-
آرایه: ذخیرهسازی نمرات دانشآموزان.
-
لیست پیوندی: پیادهسازی یک پخشکننده موسیقی.
-
پشته: مدیریت undo در یک ویرایشگر متن.
-
صف: سیستم نوبتدهی در بانک.
-
درخت: جستجوی سریع در یک دیکشنری.
-
گراف: پیدا کردن کوتاهترین مسیر در نقشه.
در کنار این مطلب دانلود کنید: آموزش صفر تا صد Php (رایگان)
دانلود دروس ویدیویی آموزش ساختمان داده و حل تست و نکات
- اگر اروری مشاهده کردید بخاطر روشن بودن وی پی ان است. بعد از پخش هر ویدیو، علامت دانلود روی آن نمایان می شود.
- اگر روی دانلود کلیک کردید و ویدیو باز هم پخش شد، بعد از پخش ردن روی علامت سه نقطه پایینش کلیک و گزینه دانلود یا ذخیره را انتخاب کنید. هر درسی مشکل داشت در نظرات اعلام کنید تا سریعا رفع شود. ضمنا هر چند وقت یک بار احتمالا دروس به روز می شوند.
- برای مشاهده بهتر ویدیوها در موبایل، گوشی را افقی نگه دارید. اگر اروری مشاهده کردید بخاطر روشن بودن وی پی ان است. بعد از پخش هر ویدیو، علامت دانلود روی آن نمایان می شود.
آموزش ساختمان داده کنکور کامپیوتر جلسه 1
|
آموزش ساختمان داده کنکور کامپیوتر جلسه 2 بخش یک
|
آموزش ساختمان داده کنکور کامپیوتر جلسه 2 بخش دو
|
آموزش ساختمان داده کنکور کامپیوتر جلسه 3 بخش یک
|
آموزش ساختمان داده کنکور کامپیوتر جلسه 3 بخش دو
|
آموزش ساختمان داده کنکور کامپیوتر جلسه 4،بخش اول
|
آموزش ساختمان داده کنکور کامپیوتر جلسه 4،بخش دوم
|
آموزش ساختمان داده کنکور کامپیوتر جلسه 4،بخش سوم
|
آموزش نکته و تست جلسه 1
|
آموزش نکته و تست جلسه 2
|
حتما در کنار این دروس دانلود کنید: آموزش صفر تا صد پایگاه داده (رایگان)
سلام کاش به صورت یک فایل زیپ همه رو برای دانلود میزاشتید ولی به هر حال ممنونم
پاسخسلام
پاسخدر توضیح پشته اشتباه درج نشده است؟ در واقع عنصر آخر وارد شده، اول خارج می شود.
توضیح سایت: LIFO (عنصر اول وارد شده، اول هم خارج می شود)