سلام دوستان.من قبلا با استفاده از رکوردها از لیست دو پیوندی استفاده کردم و مشکلی باهاش نداشتم. ظاهرا از طریق استفاده از کلاسها هم میشه یک لیست پیوندی ایجاد کرد. میخواستم ببینم ایا نسبت به روش اول مزیت خاصی داره؟ و طریقه پیاده سازی آن به چه صورت است.
سلام دوستان.من قبلا با استفاده از رکوردها از لیست دو پیوندی استفاده کردم و مشکلی باهاش نداشتم. ظاهرا از طریق استفاده از کلاسها هم میشه یک لیست پیوندی ایجاد کرد. میخواستم ببینم ایا نسبت به روش اول مزیت خاصی داره؟ و طریقه پیاده سازی آن به چه صورت است.
بستگی داره که منظورتون چی باشه؛ یک حالت اینه که کلاسی طراحی کنیم که در داخل خودش یک لیست پیوندی داشته باشه، یک رابط شی گرا به برنامه نویس ارائه کنه تا بدون توجه به این که چه Data Structure ایی برای ذخیره داده ها استفاده میشه، بتونه از این کلاس استفاده کنه.ظاهرا از طریق استفاده از کلاسها هم میشه یک لیست پیوندی ایجاد کرد.
یک حالت دیگه اینه که شما بخواید برای تعریف Nodeهای موجود در یک لیست پیوندی، از کلاس بجای رکورد استفاده کنید. در این حالت کلاس مزیتی نسبت به رکورد نداره، چون سربار بیشتری نسبت به رکورد داره. تنها استثناء این هست که بخواید برای هر Node موجود در لیست، یک سری متد هم داشته باشید. اون وقت در نسخه های قبل از دلفی 2007 استفاده از کلاس، علی رقم سرباری که ایجاد میکنه، توجیه پذیر میشه، اما در دلفی 2007 و نسخه های بعد از آن، رکوردها هم می توانند متد داشته باشند، پس این یک مزیت کلاس نسبت به رکورد هم از بین میره، و توجیهی برای استفاده از کلاس به این شکل وجود نداره.
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
ممنون.من در اصل میخوام یک کلاس کلی تعریف کنم و در داخل اون حرکت بین نودها، حذف نودها ، درج بین نودها و اضافه کردن نود جدید رو در اون پیاده سازی کنم. و برای قسمتهای مختلف برنامه یک کلاس از اون مشتق کنم و مواردی که مربوط به اون قسمت هست رو داخلش بنویسم. گفتم شاید بشه یک متغیر از نوع رکورد ایجاد کنم در کلاس اصلی که به صورت دینامیک باشه و در کلاسهای دیگه رکوردهای دیگه ایجاد کنم و به اون پاس بدم که نشد.(حالا یا من نتونستم یا نمیشه).
می تونید پیاده سازی کلاس TList و مشتقاتش را مطالعه کنید. نحوه کار TList به این صورت هست که یک آرایه میسازه، و هر عنصر آرایه یک اشاره گر هست. این اشاره گر میتونه به هر ساختار داده ایی اشاره کنه. هر وقت نیاز باشه که به عناصر آرایه چیزی اضافه بشه، TList چند خانه خالی بصورت Chunk به آرایه اضافه میکنه. خوبی این روش در این هست که مزایای آرایه ها و لیست های پیوندی را با هم دارد.من در اصل میخوام یک کلاس کلی تعریف کنم و در داخل اون حرکت بین نودها، حذف نودها ، درج بین نودها و اضافه کردن نود جدید رو در اون پیاده سازی کنم.
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
سلام.من یک کلاس نوشتم و از Tobject اونو مشتق کردم. و کلاسهایی که از اون مشتق کردم میام پارامتری که بهش پاس میدم از نوع رکورد هست و مشکل حل شد. با تشکر.