PDA

View Full Version : حذف گره در لیست پیوندی



aleas2
شنبه 05 اسفند 1391, 22:09 عصر
سلام خسته نباشید دوستان این کد قسمت حذف گره از لیست پیوندی هسته ولی درست عمل نمیکنه کسی میدونه مشکلش چی؟


class node
{
char name[30];
char lname[50];
long numhasab;
long Money;
node *next;
friend class hasab;
};//

class hasab{
node *head;
public:
void load();
void add_hasab();
void mande_hasab(char[30] ,char[50] ,long &,long &,int &);
void bardasht_hasab();
void delete_hasab();
};




void hasab::delete_hasab()////////حذف حساب
{

int taed;int chek;
long i=0;long numhasab;
node *cur;node *del;
cur=head;
cout<<endl<<"Enter Number Hasab : ";

cin>>numhasab;
while(cur!=NULL)
{
i++;
if(cur->numhasab=numhasab)
{chek=1 ; break;}

cur=cur->next;
}
if (chek==1 )
{

cout<<"in hasab mojod mibasha ba Name : " << cur->name << " " << cur->lname << " Mandeh hasab " << cur->Money ;
cout<<endl<<"motman hastid hasb hzf shvad taed 1 : ";
cin >>taed;
if (taed==1)
{
del=cur;
cur=cur->next;
del->next=NULL;
delete del;

cout<<"Yes delete hasab";
}

}
else
cout<<"No hasab";
}////////////////

EyeDean
یک شنبه 06 اسفند 1391, 10:41 صبح
سلام
در خط ۲۷ که نوشتی if(cur->numhasab=numhasab) باید دو تا == بذاری. امیدوارم این مشکل رو حل بکنه. :لبخندساده:

BeginnerProgrammer
یک شنبه 06 اسفند 1391, 12:31 عصر
کدی که نوشتی اشتباس چون داری از اونجایی که نود مورد نظرو پیدا کردی ارتباطو قطع میکنی (فقط اشاره گر نود بعدی نودی که میخوای حذف کنیو نال کردی). باید گره قبل از گرهی که میخوای حذف کنیو داشته باشی و اشاره گر بعد اونو اینجوری ست کنی، (با فرض اینکه گره قبل cur باشد)


cur->next=cur->next->next;

aleas2
یک شنبه 06 اسفند 1391, 22:28 عصر
کدی که نوشتی اشتباس چون داری از اونجایی که نود مورد نظرو پیدا کردی ارتباطو قطع میکنی (فقط اشاره گر نود بعدی نودی که میخوای حذف کنیو نال کردی). باید گره قبل از گرهی که میخوای حذف کنیو داشته باشی و اشاره گر بعد اونو اینجوری ست کنی، (با فرض اینکه گره قبل cur باشد)


cur->next=cur->next->next;

خب عزیز میتونی کد برام درستشو بنویسی والا من هر کار کردم نتونستم

BeginnerProgrammer
سه شنبه 08 اسفند 1391, 11:04 صبح
این قسمتهای اصلاح شده ی کدته. من بخش add نداشتم نتونستم تست کنم.


while(cur->next!=NULL)
{
i++;
if(cur->next->numhasab=numhasab)
{chek=1 ; break;}

cur=cur->next;
}
if (chek==1 )
{

cout<<"in hasab mojod mibasha ba Name : " << cur->next->name << " " << cur->next->lname << " Mandeh hasab " << cur->next->Money ;
cout<<endl<<"motman hastid hasb hzf shvad taed 1 : ";
cin >>taed;
if (taed==1)
{
del=cur;
cur->next=cur->next->next;
cout<<"Yes delete hasab";
}

}