مجموعه (ساختار داده)

در علوم کامپیوتر یک مجموعه یا collection یک دسته بندی از تعدادی آیتم‌های داده است که که اهمیت مشترکی برای حل مسئله دارند. به طور کلی داده‌ها از یک نوع هستند و یا در پشتیبانی از وراثت زبان‌ها از اجداد مشترک از یک نوع نشات گرفته‌اند یک مجموعه یک مفهوم قابل استفاده برای انواع داده انتزاعی و نه تجویز خاص پیاده سازی به عنوان یک بتن ساختمان داده, هر چند اغلب یک انتخاب متعارف وجود دارد .
نمونه‌هایی از مجموعه‌های شامل لیست‌ها, دسته‌ها , چند دسته‌ها , درخت‌ها و گراف‌ها می‌باشد .
آرایه (یا جدول) با اندازه ثابت معمولا به عنوان یک مجموعه در نظر گرفته نمی‌شود به دلیل نگهداری مقدار ثابت از داده‌ها اگر چه آنها معمولا نقش مهمی در پیاده سازی مجموعه ایفا می‌کنند . آرایه‌هایی با اندازه متغیر به طور کلی مجموعه در نظر گرفته می‌شوند.
مجموعه‌های خطی
هم چنین ببینید : فهرست ساختار داده
بسیاری از مجموعه‌ها یک ترتیب خطی خاص را تعریف می‌کنند.و بعضی داده ساختار‌ها نیازی به پیاده سازی خطی نیست ; برای مثال یک صف اولویت که اغلب پیاده سازی آن با پشته است که یک نوع درخت است. مجموعه‌های مهم خطی عبارتند از:
لیست
پشته
صف
صف اولویت دار
صف دوطرفه
صف دو طرفه اولویت دار
فهرست
مقاله اصلی :لیست (نوع داده انتزاعی)
یک لیست یا دنباله، یک نوع داده انتزاعی است که نمایانگر تعداد شمارش پذیری از مقادیر مرتب است، بطوریکه یک مقدار ممکن است بیش از یکبار مشاهده شود. یک لیست نمایش کامپیوتری از مفهوم دنباله‌های متناهی در ریاضیات است. نمونه‌هایی از عملیات در لیست‌ها جستجو برای یک داده در لیست و تعیین محل آن (اگر آن وجود دارد) , حذف یک آیتم داده از لیست، اضافه کردن یک آیتم داده به لیست در یک مکان خاص و غیره است .اگر عملیات اصلی در لیست، اضافه کردن اقلام داده در یک انتها و حذف موارد داده در انتهای دیگر باشد یک صف یا FIFO بوجود می‌آید
پشته
مقاله اصلی :پشته
پشته یک ساختار داده LIFO (آخرین ورودی از همه زودتر خارج می‌شود : Last In First Out) با دو عملیات اصلی است: (push) که یک عنصر به بالای مجموعه اضافه میکند و (pop) عنصر بالای مجموعه را حذف میکند.
صف
مقاله اصلی : صف
صف لیستی است که عمل افزودن داده‌ها درون آن از انتهای لیست و عمل حذف داده‌ها از ابتدای لیست انجام می‌شود.
مثل یک صف نانوایی داده‌ها به ترتیب ورود پشت سر هم در صف قرار می‌گیرند. بنابراین اولین داده ورودی اولین داده خروجی نیز خواهد بود، این به این معنی است که شیوه عمل‌کرد صف براساس سیاست FIFO است.
صف اولویت
مقاله اصلی :صف اولویت
در صف اولویت‌دار برای هر داده اولویتی - نه لزوما منحصربه‌فرد - مشخص می‌شود. صف اولویت را می‌توان به اورژانس یک بیمارستان تشبیه کرد که هر بیمار با شدت بیماری بیشتر اولویت بیشتری برای رسیدگی دارد. سیستم‌عامل کامپیوتر هم برای مدیریت پردازش‌ها از صفهای اولویت استفاده می‌کند.
صف دو طرفه
مقاله اصلی :صف دوطرفه
یک صف را تعمیم می‌بخشد به طوری که بتوان هم از ابتدای صف و هم از انتهای صف حذف یا اضافه کرد و دسترسی داشت. این ساختمان داده هم مانند صف از عملکرد بر اساس سیاست FIFO (خروج به ترتیب ورود) و هم مانند پشته از عملکرد بر اساس سیاست LIFO (خروج به ترتیب عکس ورود) پشتیبانی می‌کند
صف دو طرفه اولویت دار
مجموعه‌های انجمنی
دسته‌ها
چند دسته‌ها
آرایه‌های انجمنی.
دسته
در یک دسته یا (set) ، ترتیب آیتم‌های داده مهم نیست (یا نامشخص است) اما اقلام داده تکراری مجاز نیستند. نمونه‌هایی از عملیات در دسته‌ها افزودن و حذف آیتم‌های داده و جستجو برای اطلاعات در این دسته است. برخی از زبان‌ها دسته را به طور مستقیم پشتیبانی میکنند . در بقیه زبان‌ها دسته می‌تواند توسط یک جدول هش با ارزش ساختگی پیاده سازی شود ; تنها کلید برای نمایندگی از دسته استفاده می‌شود.
چند دسته‌ای
در یک چند دسته‌ای یا multiset همانند یک دسته ترتیب داده‌ها مهم نیست اما در این مورد تکرار داده‌ها موارد مجاز است. نمونه‌هایی از عملیات در multisets افزودن و حذف آیتم‌های داده و تعیین اینکه چند تکرار از یک داده خاص در حال حاضر در multiset.وجود دارد . Multisets را می‌توان با عمل مرتب سازی به لیست تبدیل کرد .
آرایه‌های انجمنی
در علوم رایانه، آرایه ربطی ، نگاشت ، یا دیکشنری به نوع داده انتزاعی اطلاق می‌شود که از کلکسیونی از جفت‌های (کلید، مقدار) تشکیل شده است، بطوری‌که هر کلید ممکن حداکثر یکبار در کلکسیون ظاهر می‌شود. دلیل این نامگذاری این است که در این نوع آرایه هر مقدار به صراحت به یک کلید «ربط» داده شده‌است (در انگلیسی: Associated) در حالیکه در نوع عادی آرایه، ربط دهی به صورت ضمنی انجام می‌شود؛ یعنی هر مقدار به‌طور ضمنی مرتبط با یک اندیس (در انگلیسی: Index) است و نیازی به ذخیره کلید (اندیس) وجود ندارد. به دلیل صریح بودن ربط دهی در این نوع آرایه، آن را آرایه «ربطی» (به انگلیسی Associative Array) می‌نامند، که برخی آن را آرایه انجمنی نیز ترجمه کرده‌اند.
گراف
مقاله اصلی : گراف
یک داده ساختار گراف اساسا از یک مجموعه متناهی زوج‌های مرتب موسوم به یال شامل واحدهایی به نام راس یا گره تشکیل می‌شود؛ همان‌طور که در ریاضیات به ازای یک یال (u,v) می‌گوییم که u به v می‌رود یا u و v مجاورند. همچنین میتوان به هر یال یک گراف یک عدد نسبت داد که در این صورت گراف وزن دار بوجود می‌آید .
نمونه‌هایی از عملیات بر روی نمودار‌ها، عبور و جستجو هستند که ارتباطات اقلام داده را دنبال می‌کنند که به دنبال برخی از ویژگی‌های خاص هستند.
درخت
درخت ساختار داده پر استفاده است که شبیه به یک ساختار درختی با مجموعه‌ای از گره‌های متصل به هم است. درخت یک گراف همبند بدون دور است. اکثر نویسندگان این قید را نیز اضافه می‌کنند که گراف باید بدون جهت باشد. به علاوه بعضی قید بدون وزن بودن یال‌ها را نیز اضافه می‌کنند.
پیاده سازی
در یک زبان بعضی از مجموعه‌ها ممکن است انواع داده‌های اولیه باشند مانند لیست در حالی که در مجموعه‌های پیچیده‌تر انواع داده کامپوزیت در کتابخانه‌ها پیاده سازی شده‌اند . مثالها عبارتند از:
C++ : شناخته شده به عنوان "ظروف"اجرا شده در کتابخانه استاندارد سی++
جاوا: اجرا در فرم ورک مجموعه جاوا
Oracle PL/SQL پیاده سازی مجموعه به عنوان نوع تعریف شده برنامه‌نویس
پایتون: پیاده سازی شده به صورت توکار و همچنین به صورت کتابخانه در