PDA

View Full Version : سوال: نیازمند یک ساختار داده



irpersian20
پنج شنبه 05 دی 1392, 09:50 صبح
سلام
نیاز به یک ساختار داده یا شاید شما ایده بهتری برای من دارید
من یک سری نود دارم که هر کدامش یک ساختار هست
حالا اگر از ارایه استفاده کنم وقتی میخواهم یک نود را کاملا حذف کنم دردسر میشه
از list استفاده کنم؟ امکان اینکه یک موقعیت رو از هر جای لیست حذف کنه به راحتی امکان پذیره؟
تا وقتی که لیست خالی شده باید این کار کنم
لیست پیوندی چطوره؟

دلتنگ اسمان
پنج شنبه 05 دی 1392, 10:01 صبح
سلام.
فکر میکنم hashtabel خوب باشه. چون با یه کلید اصلی راحت میتونی حذفش کنی.

irpersian20
پنج شنبه 05 دی 1392, 10:04 صبح
آره ممنون،با list نمیشه؟

FastCode
پنج شنبه 05 دی 1392, 10:15 صبح
اطلاعاتتون از چه نوعی هستند؟
سورت بودنشون چقدر مهمه؟
دسترسی همزمان نیاز داری یا نه؟
به وسط اطلاعات هم چیزی اضافه میشه؟
enumeration چی؟
دسترسی با اندیس هم نیاز داری یا نه؟

اول باید اینها رو حواب بدی.

irpersian20
پنج شنبه 05 دی 1392, 10:30 صبح
اطلاعاتتون از چه نوعی هستند؟
سورت بودنشون چقدر مهمه؟
دسترسی همزمان نیاز داری یا نه؟
به وسط اطلاعات هم چیزی اضافه میشه؟
enumeration چی؟
دسترسی با اندیس هم نیاز داری یا نه؟

اول باید اینها رو حواب بدی.
سلام
خیر چیزی به وسط اضافه نمیشه و از همان اول تعداد معلوم میشه مثلا 10 تا با 15
بله باید سورت کنیم بر مبنای یکی از فیلد ها و برخی مواقع هم نه لازم نیست
دسترسی هم در حدی باشه که اون فیلد رو وقتی پیدا کردم . درنهایت حذفش کنم.بله احتمالا اندیس میخواد
کار این طوره که یک ساختار دارم که ساختار چند فیلد داره.
حالا بر مبنای یکی از فیلد ها مرتب میکنیم و عدد اول اطلاعاتش رو حساب میکنیم و میریم سراغ بعدی
اما مورد هایی بعدی فرق داره
مثلا باید یکی از فیلد های ساختار رو با یک عدد که از ورودی میگیرم . کم کنم. در نهایت کمترین مقدار رو که وجود داره بیارم بیرون و حساب کنم و اون نود کاملا بره کنار

FastCode
پنج شنبه 05 دی 1392, 16:57 عصر
SortedSet<T> باید همه نیازهایی که گفتید رو برطرف کنه.
فقط باید IComparable<T> رو برای کلاستون implement کنید و فیلد مورد نظرتون رو درش مقایسه کنید.
اگر فیلد مورد مقایسه ممکنه متفاوت باشه باید IComparer<T> یا Comparer<T> رو در یک کلاس دیگه implement کنید و فیلد مورد نظر رو به constructor ه کلاس بدید.

irpersian20
جمعه 06 دی 1392, 09:08 صبح
سلام
امکان داره مثالی بزنید ممنون میشم

shahrooz ansari
جمعه 06 دی 1392, 20:26 عصر
استفاده از لیست خیلی بهتره من
می تونی از ااره گرا استفاده کنی و کدتو به صورت unsafe code بنویسی وrelease کردن گره ها اونو آزاد کنی یکم مدیریتش سخنه ولی این کارو کردم و کداشم دارم راسه سورتشم از متد حبابی استفاده کن و گره هارو عوض کن واسه نوشتن تابع change هم 8 تا شرط خاص داری :لبخندساده: از کلاسهای static هم استفاده کن تا توسط تمامی فرم ها در دسترس باشه :لبخندساده:

FastCode
جمعه 06 دی 1392, 21:09 عصر
استفاده از لیست خیلی بهتره من
می تونی از ااره گرا استفاده کنی و کدتو به صورت unsafe code بنویسی وrelease کردن گره ها اونو آزاد کنی یکم مدیریتش سخنه ولی این کارو کردم و کداشم دارم راسه سورتشم از متد حبابی استفاده کن و گره هارو عوض کن واسه نوشتن تابع change هم 8 تا شرط خاص داری :لبخندساده: از کلاسهای static هم استفاده کن تا توسط تمامی فرم ها در دسترس باشه :لبخندساده:
این عکس هیچ موقع قدیمی نمیشه:
http://78.47.35.18/barnamenevis.org/bang-head-2.jpg

aminjooon2005
جمعه 06 دی 1392, 23:04 عصر
سلام
خیر چیزی به وسط اضافه نمیشه و از همان اول تعداد معلوم میشه مثلا 10 تا با 15
بله باید سورت کنیم بر مبنای یکی از فیلد ها و برخی مواقع هم نه لازم نیست
دسترسی هم در حدی باشه که اون فیلد رو وقتی پیدا کردم . درنهایت حذفش کنم.بله احتمالا اندیس میخواد
کار این طوره که یک ساختار دارم که ساختار چند فیلد داره.
حالا بر مبنای یکی از فیلد ها مرتب میکنیم و عدد اول اطلاعاتش رو حساب میکنیم و میریم سراغ بعدی
اما مورد هایی بعدی فرق داره
مثلا باید یکی از فیلد های ساختار رو با یک عدد که از ورودی میگیرم . کم کنم. در نهایت کمترین مقدار رو که وجود داره بیارم بیرون و حساب کنم و اون نود کاملا بره کنار

دقیق منظورتون رو متوجه نشدم اما فکر میکنم list<> جواب گوی نیازتان خواهد بود
برای سورت کردن هم میتونید این طوری عمل کنید :
list.sort ( (p1,p2)=>string.compare(p1.e1,p2.e2) x

این طوری سورت رو هر طور بخواهید می تونید پیاده سازی کنید
البته پیاده سازی اصولی ترش همون گذاشتن IComparable تو کلاس هست که دوست عزیزمون هم اشاره کردن...

arash691
شنبه 07 دی 1392, 19:09 عصر
استفاده از لیست خیلی بهتره من
می تونی از ااره گرا استفاده کنی و کدتو به صورت unsafe code بنویسی وrelease کردن گره ها اونو آزاد کنی یکم مدیریتش سخنه ولی این کارو کردم و کداشم دارم راسه سورتشم از متد حبابی استفاده کن و گره هارو عوض کن واسه نوشتن تابع change هم 8 تا شرط خاص داری :لبخندساده: از کلاسهای static هم استفاده کن تا توسط تمامی فرم ها در دسترس باشه :لبخندساده:

c++ ft c# :D