PDA

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



hassan_kahrizy
سه شنبه 24 خرداد 1384, 12:08 عصر
بسمه تعالی
با سلام
در سورس زیر من ابتدا یک چند جمله ای که تعداد جمله های آن را از کاربر می پرسم ایجاد می کنم
سپس سورت می کنم ولی متاسفانه جمله آخری لیست پیوندی سورت نمی شود
همچنین وقتی دو جمله هم توان ایجاد می کنم باید با هم جمع بشه و یکی حذف بشه ولی در برخی موارد درست عمل نمی کنه
نمی دونم اشکالش کجاست؟





//// IN THE NAME OF GOD

#include<iostream.h>
#include<conio.h>
#include <stdlib.h>
class listnode
{
friend project;
private:
int tavan;
int zareb;
listnode *link;
};
class project
{
public:
project()
{
first=NULL;
second=NULL;
sum=NULL;
ptr=NULL;
}
void addnode(int,int);// tavan va zareb
void getlist(int); // shomare list
void showlist(int);// shomare list
void removelist(int,int);// shomare list va tavan gere
void sortlist();
void addedlists();
int menu();
private:
listnode *first;
listnode *second;
listnode *sum;
listnode *ptr;
};
void project::getlist(int lstnum)
{
int zar,tav,num_o_x;
if(lstnum==1)
ptr=first;
else
ptr=second;
cout<<"Enter number of x "<<lstnum<<" : ";
cin>>num_o_x;
do
{
cout<<"Enter zareb va tavan : ";
cin>>zar>>tav;
addnode(zar,tav);
num_o_x--;
}
while(num_o_x!=0);
if(lstnum==1)
first=ptr;
else
second=ptr;

};
void project::addnode(int zareb,int tavan)
{
listnode *newnode;
newnode= new listnode;
newnode->zareb=zareb;
newnode->tavan=tavan;
if(ptr==NULL)
{
ptr=newnode;
newnode->link=NULL;
}
else
{
newnode->link=ptr;
ptr=newnode;
}
};
void project::sortlist()
{
listnode *i,*last;
listnode *j;
int zart,tavt,a=1;
if (!first )
{
cout<<"this list is Empty";
return;
}
else
{
i=first;
while(i->link!=NULL)
{
last=i;
j=i->link;
while(j->link!=NULL)
{
if(i->tavan == j->tavan)
{
i->zareb+=j->zareb;
last->link=j->link;
delete j;
}
else if(i->tavan < j->tavan )
{
zart=i->zareb;
tavt=i->tavan;
i->zareb=j->zareb;
i->tavan=j->tavan;
j->zareb=tavt;
j->tavan=zart;
}
j=j->link;
last=last->link;
}
i=i->link;
}
}

}
void project::addedlists()
{
listnode *ptr1=first;
listnode *ptr2=second;
if(!ptr1||!ptr2)
{
cout<<"the list is empty";
getch();
exit(0);
}
else
{

}
}
void project::showlist(int lstnum)
{
if (lstnum==1)
ptr=first;
else if (lstnum==2)
ptr=second;
cout<<"\n "<<"The list "<< lstnum<< " is :"<<"\n";
do
{
cout<<ptr->zareb<<" X ^ "<<ptr->tavan<<" + ";
ptr=ptr->link;
if (ptr->link==NULL)
{
cout<<ptr->zareb<<" X ^ "<<ptr->tavan;
break;
}
}
while(2!=1);
}
void main()
{
clrscr();
project pro;
pro.getlist(1);
pro.sortlist();
pro.showlist(1);
getch();
}




:flower:
با تشکر

tak_savar7
پنج شنبه 26 خرداد 1384, 23:36 عصر
<span dir=ltr>
void sort()
{
struct نام ساختمان *x,*y,*t,*i;

for(i=first->next; i!=NULL; i=i->next)
for(x=first->next, y=x->next; x->next!=NULL;){
if((x->data) > (y->data)){
y->back=x->back;
x->back=y;
x->next=y->next;
y->next=x;
t=y->back;
t->next=y;
t=x->next;
if( t != NULL ) {
t->back=x;
y=t;
}
else
last=x;
}//end of first if
else{
x=y;
y=y->next;
}

}//end of second for
}</span>

hassan_kahrizy
جمعه 27 خرداد 1384, 08:44 صبح
بسمه تعالی
باسلام
متاسفانه این یک لیست دوپیوندی است
از لطف شما متشکرم
:flower:

karim_medusa
شنبه 28 خرداد 1384, 10:38 صبح
سلام دوست عزیز!
برنامه شما رو چک کردم ! ایراد های متعددی داره . نمی دونم شاید به این خاطر که برنامه هنوز کامل نیست . ولی خوب از ذکر انها سر باز می زنم تا شما برنامه رو کامل کنید . در مورد مرتب سازی که جمله آخر رو دست نمیزنه بخاطر شرط درون حلقه است j->link!=NULL ‌این باعث میشه که جمله اخری در لیست مرتب نشه .
باید بصورت j!=NULL بنویسید .




void project&#58;&#58;sortlist&#40;&#41;
&#123;


while&#40;i->link!=NULL&#41; // karim_medusa &#58; in dorosteh
&#123;
last=i;
j=i->link;
while&#40;j->link!=NULL&#41; // karim_medusa &#58; inja benevis j!=NULL
&#123;

. . . .
&#125;
i=i->link;
&#125;
&#125;

&#125;

milad45
جمعه 07 آذر 1393, 19:20 عصر
خسته نباشید عزیران اگه میشه منو راهنمایی کنید ممنون
برنامه ای بنویسید برای کالای یک انبار شامل 1000 نوع کالا یک لیست پیوندی یک طرفه با مشخصات نام - نوع- قیمت - تعداد کالا ایجاد کند . موارد زیر را انجام دهد
1) ایجاد کلاس کالا و ساخت لیست
2)نمایش تمام کالاها و نیز کالا های تمام شده
3) جستوجوی کالا بر این مشخصات ==> جستوجوی نام کالا ( توابع رشته ای) -کد کالا
ممنون میشم منو راهنمایی کنید دوستان عزیز

mehdi.0345
یک شنبه 09 آذر 1393, 12:58 عصر
سلام دوستان یک سوال داشتم
برنامه ای که لیست پیوندی رو با حلقه for مقدار دهی کنه
میخواستم بدونم کسی بلده.
:گریه::گریه::گریه::گریه: