PDA

View Full Version : مبتدی: link list



golyas.2
چهارشنبه 23 دی 1388, 14:15 عصر
سلام دوستان(منو دوست خودتون بدونین:چشمک:)
من تازه واردم برا همین نیاز به همکاری شماها دارم ولی اگه کمکی از دستم بر بیاد دریغ نمیکنم:متفکر:من با ++C کار میکنم(اجباریه:گریه:،خیلی هم سخته:عصبانی++:)
اما لان مشکل من link list هستش:عصبانی++:اگه کسی جزوه ای ،چیزی داره لطف کنه:لبخندساده:
خیلی ممنون ازلطف همتون:تشویق:

mabbaszadegan
چهارشنبه 23 دی 1388, 14:31 عصر
سلام دوست عزیز ، خوش اومدی

اولا که ++c خیلی هم آسونه (من که خیلی باهاش حال میکنم):لبخند:

کجاشو مشکل داری ؟ مبحث لینک لیست به اندازه یه درس 3 واحدی مطلب داره :چشمک:

کدی رو که روش مشکل داری بذار تا باهم بررسیش کنیم

golyas.2
چهارشنبه 23 دی 1388, 17:45 عصر
salam kheili mamnoon az lotfetoon
mishe ye kodi ro baraye mesal bezarin
man kode khasi ro dar nazar nadaram
ba tashakor:قلب:

mabbaszadegan
چهارشنبه 23 دی 1388, 17:56 عصر
/* Strictly --- Enter Only Integer Data otherwise It'll go in Infinite Loop */
#include <iostream>
#include <process.h>
using namespace std;
class linklist
{
linklist *next;
int data;
public:
linklist * ifirst(linklist *);
void traverse(linklist *);
linklist * ilast(linklist *);
void del(linklist *);
};
linklist * linklist::ifirst(linklist *temp)
{
linklist *newlink;
newlink=new linklist;
cout<<"\nEnter Data\n";
cin>>newlink->data;
newlink->next=temp;
temp=newlink;
return temp;
}
void linklist::traverse(linklist *temp)
{
while(temp!=NULL)
{
cout<<temp->data<<endl;
temp=temp->next;
}

}

linklist * linklist::ilast(linklist *temp)
{
linklist *newlink;
newlink=new linklist;
if (temp==NULL)
{
linklist *newlink;
newlink=new linklist;
cout<<"\nEnter Data :";
cin>>newlink->data;
newlink->next=temp;
temp=newlink;
}
else
{
linklist *cur;
cur=temp;
while(cur->next!=NULL)
{
cur=cur->next;
}
cout<<"\nEnter Data :";
cin>>newlink->data;
newlink->next=NULL;
cur->next=newlink;
}
return temp;

}
void main()
{
linklist *first=NULL,l1;
int choice;
while(1)
{
cout<<"**************** LINK LIST (Only For Integer) ****************\n\n";
cout<<"Choices Are :-\n=> [1] For Insert First\n=> [2] For Insert Last\n=> [3] For Traverse\n=> [4] For Exit";
cout<<"\n\nEnter Your choice : ";
cin>>choice;

switch (choice)
{
case 1:
first=l1.ifirst(first);
break;
case 2:
first=l1.ilast(first);
break;
case 3:
l1.traverse(first);
break;
case 4:
exit(0);

}

}
}





سوالی بود در خدمتم

golyas.2
چهارشنبه 23 دی 1388, 19:39 عصر
salam
kheili mamnoon:خجالت:
ama man aslan barnamaro nafahmidam:گیج:
aslan kollan ina ro behemoon dars nadan
tavagho nadarm ke shoma baram doone doone towzih bedin ama age mishe gozveiy chizi bara download bezarin:بوس::لبخندساده:
bazam az inke lotf kardino rahnemayi kardin mamnoon

mabbaszadegan
چهارشنبه 23 دی 1388, 21:16 عصر
اولش که دوتا هدر فایل رو ضمیمه کرده :

#include <iostream>
#include <process.h>
using namespace std;

در مرحله بعد اومده کلاس لینک لیست رو تعریف کرده ،
نمیدونم تا چه حد با لینک لیست آشنایی داری ، اگه خواستی بگو تا بیشتر توضیح بدم :چشمک:

اینجا اومده یه لینک لیست یک طرفه خطی رو ایجاد کرده ، هر گره در لینک لیست یک طرفه خطی تشکیل شده از دو قسمت : 1. مقدار گره(هر نوعی میتونه داشته باشه) 2. آدرس گره بعدی (که از جنس اشاره گر است)

پس کلاس لینک لیست باید دو عضو داده ای داشته باشد ؛ یکی برای نگهداری مقدار گره و یکی برای نگهداری آدرس گره بعدی

class linklist
{
linklist *next;
int data;
public:
linklist * ifirst(linklist *);
void traverse(linklist *);
linklist * ilast(linklist *);
void del(linklist *);
};
چهارتا تابع عضو نیز واسه کلاس تعریف کردیم :
1. تابع ifirst به ابتدای لینک لیست داده اضافه میکند
2. تابع traverse تمام گره های لینک لیست را نمایش میدهد
3. تابع ilast به انتهای لینک لیست داده اضافه میکند
4. تابع del یک گره را حذف میکند

و اما پیاده سازی توابع :

1. تابع ifirst

linklist * linklist::ifirst(linklist *temp)
{
linklist *newlink;
newlink=new linklist;
cout<<"\nEnter Data\n";
cin>>newlink->data;
newlink->next=temp;
temp=newlink;
return temp;
}

توی خط اول یک شئ اشاره گر از نوع کلاس لینک لیست تعریف کرده ؛
خط دوم توسط عملگر new یک حافظه پویا به این شی اختصاص میده ؛ (در حقیقت یک گره جدید اضافه میکنه به ابتدای لینک لیست)
خط 3 و 4 قسمت داده ای گره را مقداردهی میکند ؛
خط 5 فیلد لینک رو به عنصر بعدی اشاره میدهد و خط 6 اشاره گر temp رو روی خونه اول لینک لیست set میکنه ؛

2. تابع traverse

void linklist::traverse(linklist *temp)
{
while(temp!=NULL)
{
cout<<temp->data<<endl;
temp=temp->next;
}

}
فک کنم خیلی واضح باشه ، سعی کن خودت تحلیلش کنی


دوتا تابع بعدی رو میذارم خودت روش فکر کنی ، چند بار برنامه رو اجرا کن ، خوب به کار توابع دقت کن

به نظرم این کد واسه شروع بتونه کمکت کنه ، اگه اینو گرفتی یه کد دیگه میذارم که کمی سخت تر باشه

موفق باشی

golyas.2
چهارشنبه 23 دی 1388, 21:43 عصر
dastet dard nakone kheili zahmat keshidi
ba deghat mikhoonamesh age ehkali dashtam mitoonam azat beporsam?
bazam kheili mamnoon

mabbaszadegan
چهارشنبه 23 دی 1388, 21:46 عصر
حتما هرجاشو مشکل داشتی بپرس ، تا اونجا که بلد باشم کمکت میکنم

منتظرما :چشمک:

موفق باشی