ساختمان داده Data Structure
ساختمان داده یا Data Structure چیست؟
ساختمان داده (Data Structure) فرمت یا قالبی است برای سازماندهی، مدیریت و نگه داری داده ها به طوری که انجام اعمال معینی روی این داده ها را به شکلی کارآمد میسر میسازد.
برای اینکه مفهوم ساختمان داده را بهتر متوجه شوید تصور کنید هر صبح که از خواب بیدار میشوید مجبورید برای آماده شدن و رفتن به محل کار، دنبال جورابهای عزیزتان بگردید! اگر خانه شما نظم و ترتیبی نداشته باشد طبیعتا کارتان خیلی دشوار خواهد بود. احتمالا برای پیدا کردن جورابهایتان باید تمام کمد لباسها، جالباسی، داخل کفشها، زیر تخت و اگر از این هم حواستان پرتتر باشد داخل قفسههای کتابخانه و یخچال را هم جستجو کنید! اما اگر در خانه شما همه چیز مرتب و درست در قسمت مخصوص به خودش قرار داشته باشد پیدا کردن جورابها برایتان دشواری چندانی نخواهد داشت. ساختمان داده هم در مقایسه با یک خانه مرتب، نقش مشابهی برای دادههای شما ایفا میکند.
به عبارت بهتر، یک Data Structure میتواند مجموعهای از دادهها، روابط میان آنها و اعمالی باشد که روی این دادهها قرار است انجام شود. در مثال بالا عملی که مورد نظر شما بود پیدا کردن (یا جستجوی) جوراب بود. از جمله مهمترین اعمالی که در مورد ساختمان دادهها زیر ذرهبین قرار میگیرد میتوان به مواردی از جمله دسترسی به داده ها، افزودن داده جدید و حذف یک داده مشخص و همچنین جستجو و مرتب سازی داده ها و … اشاره نمود. البته الزاما هر ساختمان دادهای قادر به انجام کارامد تمامی این اعمال نمیباشد. به همین دلیل امروزه برای کاربردهای مختلف از ساختمان دادههای مختلفی استفاده میشود.
نمونههایی از ساختمان داده های رایج
اغلب زبانهای برنامه نویسی سطح بالا از ساختارها و قواعد مشخصی برای ساختمان داده های ویژه پشتیبانی میکنند. آرایه (Array) یکی از رایجترین و پرکاربردترین ساختمان دادهها به شمار میرود که مجموعهای از دادهها را در خود نگه داری میکند و با کمک اندیسهایی که به هرکدام از این داده ها اختصاص میدهد امکان دسترسی و تغییر آنها را فراهم میکند.
پشته (Stack) نیز یکی دیگر از Data Structure های پرکاربرد است. داده ها در این ساختمان داده به شکل پشتهای از عناصر روی یکدیگر سوار میشوند و جدیدترین عنصری که در آن ذخیره شده است اولین عنصری خواهد بود که پردازش (یا حذف) میشود. از دیگر Data Structure های رایج میتوان به صف (یا Queue)، لیست پیوندی (یا Linked List)، درخت جستجوی دودویی (یا Binary Search Tree)، جدول درهم سازی (یا Hash Table) و هرم (یا Heap) اشاره نمود.
پیوندهای پیشنهادی تک دیک