PDA

View Full Version : سوال: تشکیل آرایه بدون محدودیت



ali-sezar
دوشنبه 17 فروردین 1394, 23:28 عصر
سلام دوستان.
من میخوام یک ارایه بسازم که حجمش بینهایت باشه.مثلا اگه اسم و شماره دانشجویی و تاریخ تولد هر چنتا دانشجو رو بخوایم بدیم تو خودش ذخیره کنه و تعداد دانشجو رو هم نمیدونیم.
در ضمن از list هم اجازه استفاده ندارم و باید همه چیز به صورت دستی انجام شه
ممنون میشم کمکم کنین توی اینترنت چیز خاصی پیدا نکردم:لبخندساده:

plus
دوشنبه 17 فروردین 1394, 23:41 عصر
بینهایت در کامپیوتر معنی نداره دوست عزیز. حافظه سیستم محدود هست و شما میتونی بر اساس حافظه سیستم و... آرایه ای با طول مشخص بسازید.

am_al_59
سه شنبه 18 فروردین 1394, 00:08 صبح
شما و قتی یک آرایه از هرنوعی را تعریف میکنی سیستم این کار رو انجام میده
نوع آرایه شما رو کنترل میکنه و طول بایت های مورد نیاز برای نگهداری یک واحد از اون نوع رو محاسبه میکنه
مثال سادش اینه که مثلاً آرایه ای از بایت ها تعریف میکنی در این حالت سیستم تعداد بایت های مورد نیاز در حافظه برای ذخیره یک واحد از تایپ مورد نظر شما که بایت هست رو 1 محاسبه میکنه
از اینجا به بعد چون متغیر شما آرایه هست سیستم تعداد بایت های لازم برای ذخیره سازی رو در تعداد واحدهای مورد نیاز شما ضرب میکنه برای همین باید طول آرایه دقیقاً مشخص بشه
حالا برای چی سیستم اصرار داره که این ضرب رو انجام بده؟
برای اینکه نحوه ذخیره سازی آرایه در حافظه بصورت یکپارچه و پیوسته هست یعنی به آدرس و محل هر خانه دقیقاً در پشت خانه بعدی قرار دارد
دلیل سرعت بیشتر آرایه نسبت به لیست همین هست چون خانه ها پشت سر هم هستن و سیستم هی نمیخواد برای پیدا کردن خانه قبلی یا بعدی تو حافظه دنبال آدرس بگرده
دلیل کم مصرف تر بودن آرایه ار نظر حافظه نسبت به لیست هم همین هست چون در آرایه خانه ها پشت سر هم هستند سیستم فقط یک طول واحد آرایه رو نگه میداره و برای هر خانه آرایه نیازی به نگهداری اطلاعات اضافه نداره و همیشه به یک مقدار مشخص پرش میکه تا به خانه بعدی یا قبلی بره

اما در لیست اینطور نیست دقیقاً مثل همون مبحث لیست پیوندی عمل میشه یعنی برای هر واحد از لیست یک مقدار داریم که هیچ، دوتا مقدار دیگه هم خود سیستم بهش اضافه میکنه یکی آدرس خانه قبلی یکی هم آدرس خانه بعدی و برای حرکت از یک خانه به خانه دیگر باید دنبال آدرس بگرده

ali-sezar
سه شنبه 18 فروردین 1394, 18:42 عصر
درسته ولی اگه ندونیم که چند تا دانشجو داریم چجوری ارایه ای باید تعریف کنیم تا کاربر هر چند تا ورودی داد برنامه کار کنه؟
همانطور که گفتم استفاده از listهم ممنوع است

am_al_59
سه شنبه 18 فروردین 1394, 19:03 عصر
یا بریز توی فایل یا یک نوع داده جدید خودت تعریف کن که کار همون لیستو بکنه (لیست پیوندی)

sohrab08
سه شنبه 18 فروردین 1394, 19:08 عصر
میتونی از ArrayList استفاده کنی

mahdi87_gh
چهارشنبه 19 فروردین 1394, 15:23 عصر
دوست عزیز شما یا باید از لیست استفاده کنی یا بنا به فرموده دوست عزیزمون یک نوع داده جدید که همانند لیست عمل میکنه خودت طراحی کنی

hamid_hr
چهارشنبه 19 فروردین 1394, 15:49 عصر
اینجا یه مثال خوبی زده
یه کلاس طراحی میکنی مثل لیست پیوندی تو c++
http://stackoverflow.com/questions/3823848/creating-a-very-simple-linked-list