PDA

View Full Version : سوال: مرتب نمودن یک لیست دوپیوندی



joyoung
جمعه 29 دی 1391, 14:28 عصر
سلام به دوستان و استادان در عرصه برنامه نویسی
دوستان تو دانشگاه به ما برای درس Cpp یه پروژه گفتن که سوالش اینه:
یک لیست پیوندی از کارکنان دانشگاه تشکیل دهید. اطلاعاتی که باید ذخیره شود : نام کارمند، شماره کارمندی ، حقوق پایه ، وضعیت تاهل. لیست پیوندی بر اساس شماره کارمندی مرتب باشد.
من کل نرم افزارو نوشتم و کار میکنه ولی مشکل اینجاست نمیتونم لیست پیوندیمو بر اساس شماره کارمندی مرتب کنم.
کسی میتونه کمک کنه؟

maktoom
جمعه 29 دی 1391, 16:54 عصر
سلام

من کل نرم افزارو نوشتم
کیلومترها فاصلست بین پروگرام و سافت ویر. شما یه برنامه نوشتید. که خوب اینطور هم که پیداست تمرین خوبی بوده.
اما باتوجه به اینکه نمی تونید مرتب سازی رو انجام بدید نشون میده ممکنه اشاره گرهاتون مشکلی داشته باشند.
یعنی اگه همینطوری بهش بگید چاپ کنه کلش رو میتونه چاپ کنه؟

vahid_fathi
جمعه 29 دی 1391, 17:20 عصر
شما تو عنوان نوشتین مرتب کردن لیست دوپیوندی ولی تو سوال هیچ اشاره ای به دو پیوندی بودن لیست نشده.به این خاطر اینو گفتم چون مرتب کردن لیست دوپیوندی از تک پیوندی سختره

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

FastCode
جمعه 29 دی 1391, 17:41 عصر
اگر این استادها یه ذره میفهمیدن یه مساله واقعی میدادن.
آخه سورت کردن Double Linked List کجا ممکنه استفاده بشه؟


لطفاً کدیرو که نوشتید قرار بدید + ساختار Node هاتون تا ببینیم چکار میشه کرد

mahak006
جمعه 29 دی 1391, 20:44 عصر
اگه مرتب سازیش برات مهم نیست چه روشی باشه ، با روش حبابی برو . چون دو پیوندی و تک پیوندی با این روش زیاد فرقی نداره . اگه لیستت حلقویه ، شرط پایان هر مرحله مرتب سازی ، رسیدن به NULL می شه و اگه حلقویه ، رسیده به H ( ابتدای لیست پیوندی )
تو هر مرحله ، یه خونه از اول لیست بیا جلوتر و از اونجا به بعد رو تا آخر اون مرحله ، مرتب کن . اینم دستور جایگزینی دو تا نود ( p نود حلقه ی اول و q نود حلقه ی داخلی تره ) :

if(p->no > q->no )
{
l=p->left;
r=p->right;
p->left=q->left;
p->right=q->right;
q->left=l;
q->right=r;
}

joyoung
شنبه 30 دی 1391, 10:52 صبح
دوستان خیلی ممنون از راهنماییاتون
من برنامه رو با هزار بدبختی نوشتم
مشکلم اینجاست کلا ما تا فصل 6 جعفرنژاد قمی خوندیم ولی تمرین فصل 14 رو بهمون گفتن برا پروژه
این کل اون پروژه ایه که نوشتم. با ویژوال بیسیک 2012 نوشته شده
http://www.mediafire.com/?wm6hq16n99ew3p2 (http://www.mediafire.com/?wm6hq16n99ew3p2)
وقتی ازش میخوای اسامی افراد ورودی رو نشونت بده به ترتیب وارد کردن اسامی نشون میده در حالی که به ترتیب شماره کارمندی میخوایم که نمایش داده بشه
هرکس اینو درستش کنه یه شیرینی پیشم داره :قلب: :بوس: :چشمک:

joyoung
شنبه 30 دی 1391, 17:57 عصر
این یه بخش از کد برنامه
ببینید به کارتون میاد؟
void doublelinklist::display()
{
cout << "name "<<"no "<<"salary "<<"Marital\n";
cout <<"-----------------------------------------------------------------------------\n";
node *curptr = first;
while(curptr)
{
cout<< left<<setw(13)<<curptr->name<<" ";
qsort( cout<<left<<setw(9)<<curptr -> no<<" " ) ;
cout <<left<<setw(7)<<curptr -> salary<<" ";
cout <<left<<setw(7)<<curptr -> th<<" "<<endl;
curptr = curptr -> next;
}
cin.get();
}

joyoung
یک شنبه 01 بهمن 1391, 19:26 عصر
دوستان کمککککککککککککک
خوااااااااااااااااااااااا ااااااااااااااااااهش :گریه:

joyoung
دوشنبه 02 بهمن 1391, 12:15 عصر
دوستان خواهش میکنم ازتون
هر کس اینو اون تیکشو درست کنه 10 هزار تومن حق الزحمه میدم بهش
فقط یکی اینو حداقل تا فردا درست کنه
خواهش میکنم ازتون