سلام
این پست خلاصه چیزاییه که درمورد لیست های پیوندی پیدا کردم.اگه جاییش اشکال داره و اگه شما هم چیز به درد بخوری پیدا کردین بگین... (دیگه استاد خودشون گفتن گروهی کار کنین!)
1-برای
کار با nodeTypeها اول از همه باید اونها رو
تعریف کنیم(این نکته ایه که مطمئنم هیچ کس نمیدونست!)
مثلا:
struct nodeT
{
int data; //مقداری که قراره نگه
داره مثلا کدپرسنلی استاد
char name[34]; //برای اسم استاد که
البته نیاز به دوتا آرهیه داریم
nodeT *next; // برای نگهداریه آدرس
استاد بعدی
nodeT
*privew; // برای نگهداریه آدرس استا قبلی
};
2-غیر
از تعریف این struct نیاز به متغییر هایی از نوع پوینتر داریم برای جابه جایی در لیست
و نگهداری آدرس اولین خانه:
nodeT *first;
nodeT *last;
3-و یک متغییر
از نوع پوینر برای ایجاد خانه جدید یا همون node جدید:
nodeT *newNode;
4-و متغییر هایی
هم برای دریافت اطلاعاتی که لازمه به nodeبدیم.درواقع نوشتن چنین دستوری اشتباهه:
cin >> newNode->data;
درستش اینه که
بنویسیم:
cin >> num;
newNode->data = num;
5-برای
دریافت اسم استاد نیاز به آرایه داریم،که بعد از دریافت نام باید با دستور زیر
اونو توی newNode->nameکپی کنیم:
strcpy(newNode->name
, namee);
این
تابع در فایل <string.h> قرار داره.
6-برای
اضافه کردن node جدید به لیست از این دستور
استفاده میشه:
newNode = new nodeT;
حالا
کل برنامه توی این برنامه لیست ما 3 تا استاد دریافت میکنه بعد با توجه به کدی که
شما به برنامه میدین ، برنامه اسم استاد رو چاپ میکنه...
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace
std;
int main()
{
struct nodeT
{
int data;
char name[34];
nodeT *next;
nodeT *privew;
};
nodeT *first;
nodeT *last;
nodeT
*newNode;
int num; // برای دریافت کد پرسنلی
char
namee[34]; // برای دریافت نام استاد
first = NULL;
last = NULL;
for (int i=0; i<3;
i++) // چون قراره 3 تا استاد
بگیریم
{
cout
<< "Enter personal code :";
cin
>> num;
cout<<"Enter
name :";
cin>>namee;
cout<<"\n\n";
newNode = new nodeT;
newNode->data = num;
strcpy(newNode->name
, namee);
newNode->next = NULL;
if (first == NULL) //برای اولین استادی که
اضافه میشه
{
first
= newNode;
last =
newNode; newnode->privew=NULL;
}
else
{
newNode->privew=last;
last->next = newNode;
last =
newNode;
}
}
//*********************search****************************
int fou; // برای دریافت کد پرسنلی
cout<<"<<search by personal code>>... Enter
personal code :";
cin>>fou;
nodeT
*link; //تعریف
متغییر کمکی برای نگهداری آدرس ها
link=first; //
آدرس
اولین استاد
int c=1;
while(c==1)
{ if( link != NULL) {
if(link->data==fou)
{
cout<<"\n\t"<<link->name<<endl;
c=0;
}
else
{
link=link->next;
} } else c=0;
}
return(0);
}
این دستورو توی کامپایلرتون کپی کنین تا نتیجشو ببینین امیدوارم به دردتون بخوره
|