کارکو جهان سورس advertise laitec sharif univercity
دانلود پروژه مدیریت کتابخانه با سی شارپ و SQL سرور

دانلود پروژه مدیریت کتابخانه با سی شارپ و SQL سرور

3000 تومان
پکیج ویژه پروژه پایانی و پایان نامه رشته کامپیوتر

پکیج ویژه پروژه پایانی و پایان نامه رشته کامپیوتر

45000 تومان
دانلود مجموعه 100 سورس ساده و ابتدایی با سی پلاس پلاس

دانلود مجموعه 100 سورس ساده و ابتدایی با سی پلاس پلاس

5000 تومان
دانلود PDF مجموعه 300 نکته جالب برنامه نویسی در سی شارپ #C

دانلود PDF مجموعه 300 نکته جالب برنامه نویسی در سی شارپ #C

3000 تومان
دانلود پروژه مهندسی نرم افزار ، سیستم داروخانه

دانلود پروژه مهندسی نرم افزار ، سیستم داروخانه

3000 تومان

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

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

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

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

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

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

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

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

  • کلاس Node
  • کلاس 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 به این گره جدید اشاره میکند.

 

 



1
نظرات
  • user avatar Rose:
    ۱۵:۵۴:۵۰ __ ۱۳۹۴/۱۰/۰۶

    ممنون بابت مطالبتون ...

نظر خود را ارسال کنید



نام:
ایمیل:
دیدگاه:
captcha
کد امنیتی :


advertise
ساختار لیست پیوندی چگونه است؟linked list در ساختان داده هالیست های پیوندی linked list چیست؟آموزش کار با لیست های پیوندی در سی شارپآشنایی با Data Structure linked listطراحی لیست پیوندی در برنامه نویسیآموزش لیست های پیوندی در ساختمان دادهعملیات لیست های پیوندی در Data Structureتبلیغات ارزان سایت آموزش برنامه نویسیتبلیغات مخصوص طراحان وب سایتتبلیغات در سایت برنامه نویسیتبلیغات اینترنتی برای برنامه نویساندر آغوش مینیمالیسممنوی همبرگر با سه خط افقی که روی یکدیگر قرار گرفته اند نشانه چیست؟ سوئیچ به یک ستون واحدتبدیل متن ساده به وبلاگ و سایت های پویا با React.jsکتابخانه sass برای استفاده آسان تر از آنکتابخانه سطح بالا برای اتوماتیک سازی اعمال مرورگر لیست برچسب ها
تمامی حقوق این سایت اعم از محتوی ، تصاویر ، قالب و ... متعلق به گروه مهندسی وب سایت سورس کد می باشد.
SourceCodes.ir ، افقی روشن برای برنامه نویسان ، از مبتدی تا حرفه ای

پیشنهادات ویژه سورس کد

پکیج ویژه پروژه پایانی رشته کامپیوتر دانلود مجموعه 70 پروژه کاربردی سی شارپ وب سایت فروشگاه با php