X
تبلیغات
رایتل

سلام

این پست خلاصه چیزاییه که درمورد لیست های پیوندی پیدا کردم.اگه جاییش اشکال داره و اگه شما هم چیز به درد بخوری پیدا کردین بگین...

(دیگه استاد خودشون گفتن گروهی کار کنین!)



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);

}


این دستورو توی کامپایلرتون کپی کنین تا نتیجشو ببینین

امیدوارم به دردتون بخوره

 



جمعه 18 فروردین 1391 |  12:33 |  نویسنده :  فاطمه |  چاپ |  بازدید :  مرتبه   |  8 نظر