سلام
این برنامه واسه گرفتن اسامی دانشجویان به صورت لیست پیوندی هستش ولی لیست کردن و جستجوش کار نمیکنه ؟ نمیدونم چرا ؟
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
سلام
این برنامه واسه گرفتن اسامی دانشجویان به صورت لیست پیوندی هستش ولی لیست کردن و جستجوش کار نمیکنه ؟ نمیدونم چرا ؟
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
Last edited by aaaammmm87; 01-07-2009 at 15:28.
سلام خسته نباشید.
خط :
رو پاک کن.کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
ببخشید فکر کنم تایپتونو نخوندم معذرت میخوام اشتباه شد.
موفق باشید.
دوست عزیز اصلا هیچ ربطی به اون خط نداره اینو INCLUDE کردم واسه اینکه تابع NULL شناسایی بشه![]()
سلام. به نظرت تعریف لیست پیوندی و اشاره گر اشتباه نیست؟ تا اون جایی که یادمه از typedef باید استفاده کرد:
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
نوچ تعریفم درسته مشکلی نداره .![]()
کي گفته بايد براي NULL اين رو include کني ؟
مشکلتون اينجاست که مثلا وقتي ميخواد ليست کنه نمي تونه تشخيص بده که بعدي NULL هست يا نه . ما فقط يه نفر داريم ولي باز هم بعد از اين که اونو چاپ کرد از شرط temp != NULL رد ميشه .
مشکل اینه که شما student *temp=new student; رو درون هر تابع تعریف کردید. در اینصورت وقتی در تابع input شما یک لیست پیوندی میسازید، وقتی از تابع خارج میشید اون لیست دیگه وجود نداره (درواقع طبق کد شما داره چون اونرو delete نکردید اما آدری اون گم شده) و دوباره شما یک لیست جدید در هردو تابع output و search میسازید با دستور student *temp=new student;
برای اصلاح این خط رو
student *temp;
خارج از تمام تابع ها تعریف کنید تا برای تمام توابع به صورت global باشه و فقط یکبار این دستور
student *temp=new student;
رو در تابع input اجرا کنید تا فقط یکبار لیست ساخته بشه چون در هنگام جستجو و نمایش لیست نیازی به ساختن دوباره اون نیست. در ضمن در آخر برنامه خودتون حتما لیست ساخته شده رو delete کنید تا memory leak که به معنی گرفتن و رها نکردن حافظه هست، براتون پیش نیاد.
تابع NULL توی این تابع هست . میتونی از MSDN خود C استفاده کنی و ببینی !
************************************************** **********
قاعدتا باید تشخیص بده که بعدی NULL هستش چون که من با دو اشاره گر FIRST , LAST اول و اخر رو مشخص میکنم !
************************************************** **********
دوست عزیز ممنونم از توضیحتون ولی اگه توجه کنی من هر بار که یه TEMP می سازم فقط از اون برای ایجاد یه گره جدید ازش استفاده میکنم و طبق FIRST , LAST حرکتم رو ایجاد میکنم که این باید درست باشه ( الگوریتمی) !
دوست عزیز شما میتونید اینو درستش رو بنویسید ؟ ؟ ؟ ؟
کد اصلاح شده
فکر کنم فقط روتین input رو تغییر دادم که آدرسها در هنگام اضافه کردن گم میشدن و آخرین رکورد هم به NULL اشاره نمیکرد. این دو خط رو در ابتدای main اضافه کن که اشاره گرها مقدار اولیه NULL داشته باشند:کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
کد:برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)