اشاره گر به اشیاء و ایجاد لیست پیوندی در سی پلاس پلاس
جلسات دوره
مهدی عباسی
مهدی عباسی هستم، مسلط به حداقل ۲۰ زبان مطرح برنامه نویسی به صورت پیشرفته، مدیر عامل شرکت آریا نرم افزار و بنیانگذار آکادمی درسمن، مسلط به تدریس دروس تخصصی کاردانی و کارشناسی کامپیوتر، پایگاه داده ها، برنامه نویسی پیشرفته، مبانی برنامه نویسی، مباحث ویژه طراحی وب و .... مشاهده رزومه
آموزش اشاره گر به اشیاء و ایجاد لیست پیوندی در سی پلاس پلاس:
در این جلسه با مبحث اشاره گرها به اشیا و ایجاد لیست پیوندی در ++C آشنا میشوید. در جلسات گذشته با اشاره گرها آشنا شدیم و یاد گرفتیم که می توانیم یک اشاره گر تعریف کنیم که به یک متغیر معمولی، آرایه یا ماتریس متصل شود و حتی میتوانیم اشاره گرها را به توابع متصل و از آنها استفاده کنیم. اما حالا که یاد گرفتیم از کلاسها استفاده کنیم، اشاره گرها را میخواهیم به اشیاء متصل کنیم. وقتی اشاره گرها را به اشیا متصل میکنیم باعث پویایی حافظه میشود، سرعت درج و حذف بالا میرود.
ما همیشه در برنامه کاربردی نیاز داریم با دادههای خیلی زیاد کار کنیم تا قبل از این فقط میتوانستیم از آرایهها استفاده کنیم. آرایهها دارای مزیتهای زیادی هستند، چون میتوانند دادههای زیادی را برای ما نگهداری کنند اما همیشه یک معضل بزرگ برای آرایهها وجود دارد اینکه درج و حذف از آرایه خیلی سخت است برای مثال اگر یک آرایه 100 عنصری داشته باشیم که دادههای مرتبی داشته باشد و اگر تصمیم بگیرم که یک دادهایی وسط آرایه درج کنیم برای اینکار مجبوریم تمام خانههای بعدی آرایه را حرکت دهیم که یک عمل درج انجام دهیم و شاید بخواهیم عنصری از آرایه حذف کنیم و با حذف کردن آن میخواهیم آرایه دوباره مرتب باشد. علت این مشکل این است که دادهها پشت سرهم در حافظه قرار دارند.
اما به جز آرایهها که ساختاری نسبتا ایستا دارند یک ساختمان داده خیلی قدرتمند به اسم لیستهای پیوندی داریم که دقیقا مشکلات آرایه را حل میکند به جای اینک خانههای حافظه را کنار هم در اختیار ما قراردهد در واقع به صورت پراکنده در اختیار ما قرار میدهد به کمک لیستهای پیوندی هر دادهایی را که در جایی از حافظه ذخیره کردیم یک فیلد دیگر کنار آن قرار میگیرد که دارای آدرس خانه بعدی میباشد و میتوانیم خیلی راحت به آنها دسترسی داشته باشیم. قطعا به دلیل اینکه خانهها کنار هم نیستند سرعت آن کند تر است. به این نوع لیست پیوندی یک طرفه میگویند.
ما هر زمان میخواهیم دادهایی را ذخیره کنیم معمولا خانهایی داریم که دادهها را در آن میریزیم اما در لیستهای پیوندی برای نگهداری یک داده به دو خانه نیاز داریم یک خانه برای نگهداری داده که از جنس داده معمولی است و یک خانه برای نگهداری آدرس بعدی که جنس آن از نوع اشاره گر است. پس نیاز داریم یک ساختار دو تیکه داشته باشیم که بخش اول بتواند داده ذخیره کند و بخش دوم اشاره گر ذخیره کند. اما این آدرس، آدرس خانه بعدی میباشد. پس ما به یک کلاس با دو صفت نیاز داریم. در آرایهها محدودیت تعداد عناصر داشتیم یعنی آرایه حتی اگر پویا هم تعریف میشد به این شکل بود که تعداد خانههایش از ابتدا مشخص بودند، اما مزیت لیستهای پیوندی این است که هیچ محدودیتی ندارد، کاملا پویا است و تا بی نهایت میتوان به آن خانه اضافه کرد.
دوست درسمنی عزیز، امیدواریم از این آموزش لذت برده باشید.
برای یادگیری این مبحث میتوانید این درس را تهیه کنید و از فایلها و ویدئو این بخش استفاده کنید.
شما عزیزان میتوانید سوالات خود را در بخش انجمن پرسش و پاسخ مطرح کنید و همچنین منتظر انتقادات و پیشنهادات مفید شما در بخش نظرات هستیم تا ما را در کیفیت بهتر آموزشهایمان یاری کنید.
با امید موفقیت و شادی برای شما دوست درسمنی عزیز
انجمن ++C کاران درسمن
نظر شما در تصمیم دیگران اثرگذار است.
لطفا برای همراهان درسمن و بهتر شدن دوره نظر خود را بنویسید.