دانلود پروژه - امروز : پنج شنبه ۱۸ آذر ۱۳۹۵

لیست پیوندی linked list ساختمان داده

موضوع : ساختمان داده,سی پلاس

لیست پیوندی linked list ساختمان داده

لیست پیوندی linked list ساختمان داده

لیست پیوندی چیست

لیست پیوندی linked list عرض سلام و احترام خدمت شما کاربران گرامی سایت سی پلاس امروز درخدمت شماییم با یکی دیگر از آموزش های ساختمان داده می خواهیم امروز توضیحات راجب لیست پیوندی در ساختمان داده بدیم.لیست پیوندی (linked list)، مجموعه ای از عناصر به نام گره است، که هر گره به گره بعدی اشاره میکند. هر گره شامل دو فیلد است: فیلدی برای ذخیره داده ها و فیلدی برای ارجاع به گره بعدی.

لیست پیوندی linked list

در بسیاری از کاربردها خوب است که داده ها بصورت لیست سازماندهی شوند. نوع خاصی از سازماندهی عناصر بصورت لیست، لیست پیوندی میباشد. کتابخانه کلاس در محیط .NET چندین کلاس کلکسیون مبتنی بر لیست دارد که کلکسیون LinkedList میتواند نوع خاصی از لیست پیوندی بنام لیست دو پیوندی را پیاده سازی نماید.هنگامیکه از لیست داده ها استفاده میشود، آرایه ها متداول ترین ساختمان داده به حساب می آیند.

اما آرایه یک ساختمان داده کامل نیست. جست وجو در آرایه نامرتب کند است، زیرا احتمالا باید تمام عناصر آرایه مشاهده شوند. در مواردی که فکر میکنید پردازش لیستی از داده ها با آرایه، کارایی چندانی ندارد، بهتر است از لیست پیوندی استفاده کنید.لیست پیوندی (linked list)، مجموعه ای از عناصر (اشیای کلاس) به نام گره است، که هر گره به گره بعدی اشاره میکند. آخرین گره لیست (سمت راست ترین گره) به جایی اشاره نمیکند.

هر گره شامل دو فیلد است: فیلدی برای ذخیره داده ها و فیلدی برای ارجاع به گره بعدی. فیلد ارجاع به گره بعدی را پیوند میگویند. عناصر لیست پیوندی (گره ها) از طریق ارتباط آنها با عناصر دیگر لیست پیوندی، دستیابی می شوند. برای حرکت در لیست پیوندی باید از ابتدای لیست، پیوندهای هر گره را دنبال کنیم تا به انتهای لیست پیوندی برسیم. پیوندی که به گره ای اشاره نمیکند، null (تهی) است. ابتدای لیست را نیز معمولا با یک گره خاص یا مرجع خاصی مثل firtNode مشخص میکنیم.

دو عمل مهم در لیست، درج گره ای در لیست و حذف گره از لیست میباشد. برای این عمل مهم بدون هیچ مشکل و هرگونه پیچیدگی نوشته شوند، لیست ها را طوری در نظر میگیریم که گره ویژه ای بنام گره رأس در ابتدای آنها باشد. این گره جزو گره های لیست محسوب نمیشود، ولی میتواند حاوی اطلاعاتی راجع به خود لیست پیوندی باشد. مثلا میتواند حاوی تعداد گره های فعلی موجود در لیست باشد. مزیت چنین لیستی این است که تمام گره های موجود در لیست، یک گره قبل از خود دارند.

هم چنین دانلود کنید :لیست پیوندی ساختمان داده

 

ساختار لیست پیوندی را شرح دادیم، حال باید به روش شیءگرا آنرا طراحی کنیم. طراحی لیست پیوندی مورد نظر شامل حداقل دو کلاس است:

لیست پیوندی linked list کلاس Node

لیست پیوندی linked list کلاس LinkedList

 طراحی کلاس Node در لیست های پیوندی :
کلاس Node که قرار است ساختار گره را پیاده سازی کند شامل دو فیلد است:

فیلد data برای ذخیره داده هافیلد link که شامل مرجعی برای ارجاع به گره بعدی است.فیلد data را از نوع object تعریف میکنیم تا در ذخیره انواع داده ها در لیست پیوندی با مشکل مواجه نشویم. اما فیلد link از نوع خود Node است. کلاسی مثل Node که در داخل خودش شامل ارجاعی از نوع Node است، بنام کلاس خودارجاع نامیده میشود. کلاس Node دو سازنده نیز دارد.

به یک سازنده پیش فرض نیاز داریم تا یک Node خالی ایجاد کند، بطوریکه فیلدهای data و link هر دو برابر با null باشند. علاوه براین، به سازنده ی دیگری همراه با پارامتر نیاز داریم تا مقداری را در فیلد data قرار دهد و فیلد link را برابر null کند. علاوه بر فیلدها ومتدهای سازنده در کلاس Node دو خاصیت به نام های Data و Link را در نظر میگیریم. خاصیت Data برای مقدار دادن و بازیابی فیلد data و خاصیت Link برای مقدار دادن و بازیابی مقدار فیلد link بکار میرود.

 طراحی کلاس LinkrdList در لیست های پیوندی :
کلاس LinkrdList، پیوند بین گره هایی را که با استفاده از Node ایجاد میشوند، برقرار میسازد. این کلاس شامل متدهایی برای پیاده سازی عملیات های روی لیست پیوندی است. این عملیات عبارتنداز:

Insert : گره ای را در هر نقطه از لیست درج میکند.
Remove : گره ای را از لیست حذف میکند.
PrintList : گره های لیست را پیمایش میکند.
Find : گره ای را در لیست می یابد که گره جدید باید پس از آن درج شود. این متد توسط متد Insert مورد استفاده قرار میگیرد.
FindPrevious : برای حذف گره ای از لیست توسط متد Remove باید گره قبل از آن را داشته باشیم.
InsertAtFind : گره ای را به انتهای لیست اضافه میکند.
تنها گره ای که در کلاس LinkedList به آن نیاز داریم، گره header است که بعنوان گره رأس عمل میکند. فیلد link گره header برابر با null است و وقتی که گره جدیدی به لیست اضافه میشود، فیلد link گره header به این گره جدید اشاره میکند.

چه امتیازی به این پروژه می دهید؟
0 تا کنون ثبت شده است
نماد کسب و کار اینترنتی
تمام حقوق مادی و معنوی و طرح قالب برای "سی پلاس" محفوظ است و هر گونه کپی برداری خلاف قوانین می شود. گرافیک و طراحی : دانلود پروژه