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

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

3000 تومان
دانلود پروژه آموزش چندرسانه ای با دایرکتور Director

دانلود پروژه آموزش چندرسانه ای با دایرکتور Director

3000 تومان
سورس پروژه دفترچه تلفن ساده در سی شارپ #c و بانک Access

سورس پروژه دفترچه تلفن ساده در سی شارپ #c و بانک Access

3000 تومان
دانلود سورس n وزیر با جست وجوی ممنوع در سی شارپ #C

دانلود سورس n وزیر با جست وجوی ممنوع در سی شارپ #C

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

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

15000 تومان

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

سفارش پروژه در سورس کد

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

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