Data struct with c++.pdf

download Data struct with c++.pdf

of 58

Transcript of Data struct with c++.pdf

  • 8/18/2019 Data struct with c++.pdf

    1/58

  • 8/18/2019 Data struct with c++.pdf

    2/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    2

     ٌ   ا  سدا رص رو  ون اذا اد اداد ا  دس

    :

    10 8 6 42دا بٌر .اي  س 

     

    ادال

     اصر

     ان

     ااي

     

     رج

    ٌ

     اذي

     و

     وا

     ادس

     ا

    وا جرٌ  و اذي  .واصر ادال ا ا ادس

    Last in First Out

     وصر ب LIFOذك د دا  ادس ذه اره

    ص:

    *

    ٌ

     ل

    ٌ

     ن

     رة

     و

     ادس

    .طٌق ادس ن ل اصوت او ن* "دث ٌ م  طرا ماوا ل"

    ٌرج او ٌLIFOادس و*  و اذي  اٌر   لدٌ . اي اصر اذي 

    ٌب ان  وق ا ص* .دل صر ادس 

       ما ا و رصا نا فر فٌ

    ٌ

    ص "دد  وص رإ ا ج"  كذو نٌو   رف ن و ا صر

    اtop.

    ٌ

    ا  topإ سٌpointerد و اوintرصا ا لٌد  د نو 

     ٌاذا ن دي صو ن   وصا  ا01لوا ٌ  وادم ادل  صر

    اٌر   ن  اtopٌصرٌن .ن اصر ا و ا ص دٌ0  ل 

    *  . وا  د اصر ا ا اد ٌpushادل اصر ا ادس

    *

     ادس

     ن

     اصر

     ب

     

    ٌ

    pop

    ٌ

    ٌ

    و :صورة 

     

    دل

     و

     ل

     "

     ام

     ر

    ٌ

     و

     واود

     

    ٌ

     ا

     اوم

     ان

     اد

    "

  • 8/18/2019 Data struct with c++.pdf

    3/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    3

     

    اىَيبد ي ادس  

    :two operationsٌ  ٌد و ان 

    ٌ

    و

     ادس

     ا

     اصر

     ادل

     

    ٌ

    push

    ٌ

    و  ٌpopاراج اصر ن ادس 

    ٌ

    اpushا هرٌر ٌوم ادم   ذا اصر  وم دل اصر ا ادسادا()push

    ورٌر اصر7اي اذا ارد ادل اصر   ادا ءدا و ٌ   ل  7ا ادس ٌا:

    :ودpush(7);

    و ىرا ٌاpopنا بٌ  ٌا وٌذ ذه    وم ب اصر ن ادسادا د

    pop()ا اذ   ٌاصر اذي م  ن ادس ٌل    رٌ  وو::ود

    int var=pop();خ ابه

    ٍ

    صا

      اشاstack 

  • 8/18/2019 Data struct with c++.pdf

    4/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    4

    k Stacوا أ:

     وا جرا را لادا( اٌر (ادال او ارج   

    : اشا هبا خيَخيَث   ٍ

    ب

    ّ

    شث  

    #include #include 

    int size=10;//ب 

    ْ

     ب

    ْ

    ش

     س ىا

     زش

    َ

    م

     

    َ

    ىب

     ي

     

    ٍ

    ب

    ّ

    شجىا

     

    int a[10],top=-1;//ب 

    ْ

    ش

     خ

    ٍ

     ب

    َ

    10ب 

    ْ

     اىزة

     ثب

     -1 

    int pop();// بْش  اشا اىخ 

    void push(int[],int);// بْ   شْب  اىخ  شْب  ٍِ

       ايب

    main()

    {

    int i,k;// بْش   شزٍ

    ب ىشض ٍ

    ازا   ٍ

    ب

    ّ

    شجىا  

    for(i=0;i

  • 8/18/2019 Data struct with c++.pdf

    5/58

  • 8/18/2019 Data struct with c++.pdf

    6/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    6

    S = Push(10, S);

    S = Push(5,S);

    S = Push(2,S);S = Pop(S);

    while (!IsEmpty(S)){

    cout

  • 8/18/2019 Data struct with c++.pdf

    7/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    7

      {if(!empty())for(int i=0;i

  • 8/18/2019 Data struct with c++.pdf

    8/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    8

    {if(ps->top>(-1)){couttop]data=c;

    p->next=top;top=p;

    } }

    //********************** int pop()

    {

  • 8/18/2019 Data struct with c++.pdf

    9/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    9

    node*p=top;

    int x=p->data;

    top=top->next;delete p;

    return x;}

    //************************ main()

    {

    int i,x;cin>>x;while(x>-1)

    {push(x);

    coutx;

    }while(top!=NULL)

    {cout

  • 8/18/2019 Data struct with c++.pdf

    10/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    1

     

    : Queue :ٌ   ب

    ٍ

    Queue :

    ٌث ان اص   لا ن تٌا زٌن  ٌدم  ٌت  ٌل  ٌدلو رة ن  اذي ٌم  ٌدل  ار و اذي  ٌم  او واصر اذي  .  اااو طور 

    :ـ اٌو ل  اطور او 

     ٌإلوطرٌؤا  رطا ٌ ٌون    صا ةرنٌرا  ز

    وظٌن  ازو داطرؤر ٌؤاطورض او واد ن 

    وزاوودة

    ٌ

    ٌدلارٌنك ول او  ٌدل   س ف  در 

      ش

    ٌ

    ٌصف  ار اطوررٌن   ٌراح   ون  اطور او اي صر 

     ٌ ود رة رك اطور م و ط واد"ا"ٌو ٌا  اطور 

     نن

    ٌ

    را

     وب

    ٌ

     اذف

     

    ٌ

     و

     

    ٌ

    ا

     

    "

    ٌ

    د

    "ذاول

    ٌ

     

    .دور اوظف 

    ا اذ:وٌ ل ام 

     :ا فارصا مادا روط ل وا

     

    و لوا  جرٌ ٌدل  اول   ال اق  ادا اذي ا ا اصر اذي ٌرت" اٌن  "اوٌرت 

    ( first in first out) 

     فو يذاو رٌا  ٌا م  اصر  واذف"ر ٌ"و ار ان 

     

    ٌ

     وف

     واذي

     اول

     اصر

     

     م

    ٌ

    "ور

    ."

  • 8/18/2019 Data struct with c++.pdf

    11/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

     :ـ ظ***

    front:-فذا ٌ  ٌ .و روت وو اصر اول اذي م rear :-ٌ  ا ٌ اٌر اذي م ا وم  رٌر وو اصر  .و 

    :ـ  ٌو   ثد ا تٌا ٌٌا  و وٌا   ثد ا ا**

    و

    ٌ

    ٌ

    د

     و

     وصا

     

     دث

     ا

     اذف

     

    ٌ

    و

    ** " + روت رٌر  " و نٌٌد  + وص ن وٌا .وون 

     //abdo.solh

    #include 

    #include 

    int size=10; 

    struct queue

    {

    int rear;

    int front;

    int ele[10];

    }q;//******************************** 

    void initli( queue*q)

    {

    q->front=0; //front =Null; 

    q->rear=-1; //rear=1; 

    }//***************************** 

    int insert ( queue*q,int e )

    {if((q->rear)>size)

    coutrear+1;

    q->ele[q->rear]=e;

    }

    }//**************************** 

    int delet( queue *q)

    {

    if(q->rear < q->front)

    {coutfront++];

    }//********************************** 

    void display( queue *q)

    {for(int i=q->front;irear;i++)

    cout

  • 8/18/2019 Data struct with c++.pdf

    12/58

  • 8/18/2019 Data struct with c++.pdf

    13/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    3

      {cout

  • 8/18/2019 Data struct with c++.pdf

    14/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    4

    };

    int main(){

    queue a;int data[5]={32,23,45,99,24};

    cout

  • 8/18/2019 Data struct with c++.pdf

    15/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    5

    {

    if((q->rear)>size)

    coutrear+1;q->x[q->rear]=e;}

    }//********************************* 

    int delet(struct queue *q){

    if(q->rear < q->front){coutfront++];

    }//********************************** 

    void display(struct queue *q){for(int i=q->front;irear;i++)

    cout

  • 8/18/2019 Data struct with c++.pdf

    16/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    6

      case 2: cout

  • 8/18/2019 Data struct with c++.pdf

    17/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    7

      }

    }

    int main ()

    {

    initial ();

    cout

  • 8/18/2019 Data struct with c++.pdf

    18/58

  • 8/18/2019 Data struct with c++.pdf

    19/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    9

     

    //********************************************** :Linked lists

     [1] دLinked List

    (1.1) Linked list(1.2)أLinked list

     Single Linked List [2]

    (2.1) ا ٌصاSingle Linked List(2.2) تٌا :Single linked listض 

     1  ص – 2  – ا ضر

    3  – ا لوأ  رص 4  صر  ن د – 

    5 –

     ا

     

     صر

     ن

     6ث  – ا رص بٌر

    7  – ا رص دد داد8  – ا ن رص فذ

    9 –ا تٌزراوSingle Linked List 

    خ

    ٍ

    صا

    Linked lists

  • 8/18/2019 Data struct with c++.pdf

    20/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    21

     

    خ اىسفٍ

    صا

    خ اىٍ

    صاسج

  • 8/18/2019 Data struct with c++.pdf

    21/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    2

     

    Double Linked List [3] 

    (3.1) ا ٌصاDouble Linked List(3.2)

    ٌ

     ل

    ٌ

    و

    Single linked list

    Double Linked List 

    وٌس  دة أزاء وذك ن رات اووع را زٌٌن   ٌ   عوو حرط فآ ٌا  طدا 

    ٌ

    وٌصب   أوت دة   ٌ  ٌ.راٌب    ىرا تٌزراوا اطرٌق م ض  ٌك  ٌل  ن ء  ذا ت ذا اووع وف 

    اٌت ارٌب اStackQueueل    بأ فو ا رٌغو.

     [1] دLinked List 

    (1.1) Linked list  كا يأ .ما ةدود رٌغو اٌت رط   اض  دٌد رة ن  ن   صر 

    ج ا  د دارا تٌا .ر  دد 

    (1.2)أLinked listو  ادٌد ن راك ورك   توصا تدا كأ ددود و ج وص فر 

    وصا..!!  وصا

     م

     ن

     د

    ٌ

    ز

    ٌ

     ت

    ٌ

    ا

     ن

     دد

     ف

    ٌ

    ٌ

     أن

     را

     دم

     اج

     أو

     ات

     و

     ذا

     ون

    خ اىسفٍ

    صا

     اىظ

  • 8/18/2019 Data struct with c++.pdf

    22/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    22

    اظك رف دث

    ٌ .ذا وف ن أن ل ا دام اصوت ل اإرات  خ اصو ا  صواطر  ٌأك دا ق ن دد اصر ل وزات دود   و ن  ذه  دٌدة ذات م أر

     وصازٌد ا و ات ذك  .

    )ن linked list ون داك ٌو ك   تٌا ٌزٌل ك م ذه ا ودل  وف  م

    ٌم  اك( اذارة ( ٌت اٌت اد  ط ول   ج ل ر دد ٌر آر ن  ٌ  ٌاض  أ صوlinked listم( وذا  ٌطق   ٌٌد.

     

    ٌ

    صو

     د

     

     

     ا

     رح

     م

    ٌ

     وف

     1 ))ا  رص -:آ   :د  صر

    ارٌب  ٌت    : وأ طاو ةراذا  دٌد رٌب  : ذا ن ك صر آر ئ  ٌnewبٌرا ود وان ذك 

     . اصر اnextاإر

     د إر ا  رص رآ ا رصا ن اذ  : nextٌNULL 

    2-ا رص ضر-: ٌا  .ٌم   ط و رص ل  رورا مو نأ و  ا رص ضر مو فو نا

    : أ ا  رص رآ و ل رصا ن ق : وأ.

    ٌ

    ا

     رض

     ر

    ٌ

    ا

     اصر

     س

    ٌ

     اصر

     ن

     ذا

     :

    ٌ

    د

     اذي

     اصر

     

     ورك

     ت

    .اٌر وف : ذا ن اصر و اصر  .

     

    3-ا رص دد داد: دادا ٌا ٌزٌد دار واد. م   أي رف داد ون م   ٌداد آرى :ل أي 

    أ ا  رص رآ و ل رصا ن ق : وأ.زٌد اداد دار واد اٌر  ٌس اصر  : ذا ن اصر  ٌ.

    اٌر وف : ذا ن اصر و اصر  . 

    4-

    ا

     

     صر

     ن

     ث

    : ٌا ا ٌوم  اث ن صر ن صر ا و م  : ذه 

    : ق ن اصر ل و  وأ أ ا  رص رآ.ٌت اث ٌت اصر و  اٌر ق ن  ٌس اصر  : ذا ن اصر  ٌ

     وف ٌت اث  ط رصا تٌ : ذا ن  ا رص كر  ٌت اث  ط رٌغ ٌت اصر  : ذا ن  ار.

     اذ : و رٌا .ن اصر و اصر  

    :-ضفة في ول اق م-5

     ٌا ٌون اصر اول. وذه  دٌد  أول ا أي أن  رٌد  صر  :ان 

    ٌ

     

     و

     د

    ٌ

    د

     )صر

    ٌ

    ر

     ء

     وم

     :وأ

    .

  • 8/18/2019 Data struct with c++.pdf

    23/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    23

     ا  رص لوأ  بٌرا : م رط  ٌدا ارٌب  : د إر ا وان  .

     Linked list

     Linked list: is a data structure wherein each element

    contains both a data value and a pointer to nextelement in the list.

     ـا تازٌ :linked listض  ٌ

     

    اذار

     

     اصر

     ب

    ٌ

    ر

     واوم

     ت

     وو

     

     ة

    اٌت اد   اصوت ا دد دد    ج ر دد ـ ـا  قطٌ اٌت ا وف د(دد م اصو )ذاك 

    linked list.ٌٌٌدا اصوت  ت وو  ةراذا  رصا بٌر ٌم  ٌف  ٌول اض  واٌد 

    (ٌٌاذي دة(. ٌوم ظ و اصر اذي  اواب و أن ل صر 

    :

    ٌ

     رى

     أر

     

    ٌ

    وو

     

  • 8/18/2019 Data struct with c++.pdf

    24/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    24

     وف دل  اد:  أنـ ـ ا ٌصا  ذه 

    linked list-: 

    struct nodeptr

    {

    char info;

    struct node*next;

    }; This is the pointer to the

    شر

    اىشاثظ

    اٌت  اـــ  :linked listوف دأ أن ؤم وأء ٌ  :nodeــــا لاد وnodeمرا50:

    :ٌا  ٌزراوا ٌم ذاك ن ل 

    Initial(node*f)

    {

    f=getnode( );

    f->link=null;

    f->info=50;

    };

     

     اى ثئّب َْب  اىَبه  اىزبىخ: nodeا 

      new node ٌإّب  يf اىَؤش 

      اى    fث اع  ثّخ أشnullث إبح خ

    َ

    بىا   شْ اى  50ثئبه nodeاو 

    اىَؤش   fاىز ش إىب 

     

     

    50

  • 8/18/2019 Data struct with c++.pdf

    25/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    25

     

    ٌ

    ـا طر ٌ :node:ا لوأ

    دٌدة وو  و  اnodeورٌد رطnodeد ٌذه اـ 

     5

     

     

    Insert_B(node*f)

    {

    node*c;

    c=getnode( );

    c->info=40;

    c->link=f;

    f=c;

    ب

    ّ

    إnew node ٌ  

    ؤش

    َ

    ىاي

    اى  ثبى  nodeثشثظ  ّْب  أ  زىاnode

    اىبَخ    ىاfirst

    اىَؤش  ثْو   fىا ىإnodeببْث  زىااىبnodeثبىبَخ اىز أجسذ أه   

    ا نو:ٌ   

     5

     

     

    7

     

    c

  • 8/18/2019 Data struct with c++.pdf

    26/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    26

     طر ٌ  :node:)ر سٌو  وؤ سٌ ( ا طو

     ر نو بطا دا تٌ   ٌد  36:ٌ   لا نوٌ ورٌد ن   ا ب ارم ا رم اطب 

    Insert_l(node*f)

    {

     node*c,*p;

    c=getnode( );

    c->info=30;

    p=f;while(c->info > f->info && c->info > p->info)

    p=p->link;

    c->link=p->link;

    p->link=c;

    }

     

    ب

    ّ

    إ

    new node

    ؤش

    َ

    ىا   ٌc

    اىجبّبد او  nodeاى 

     

    ؤش

    َ

    ىا  ث pىا node ىا  fاىز ش إىب 

     ز  زشؤَىا  ازبث وْزىاpهس بٍَ

      اىبَخ  

    بب

     ُ

    ( طبىَب  :ىبزىبث  شىا اc->info >f->infoىا دبٍ

    ي

    ٍ

     )nodeش زىااىَؤش  بد اىcإىب 

    ٍ

    ي

    ٍ

      اىَؤnodeامجش  )&&) fىز ش إىب 

    (c->info>p->linked->infoىا دبٍ

    ي

    ٍ

     )nodeشؤَىا cاىز ش إىب 

      بد اىٍ

    ي

    ٍ

    (node ىا بد ٍ

    ي

    ٍ

      ثبىبَخ( امجش  اىز شnodeاىَشا ثب اىَؤش  إىب اع 

     ر ث بْزث  wile:ىبزىبث  شىا ا  طجبثبى nodeثظ اع اى ثش اىز ش إىبnodeاىَشا ثب   pاع اى

     

    ؤش

    َ

    ىا ثْو اع   pىا nodeش بم  زىااى   ىإ بىإnodeىا(بث ر  زىاc)

     

    ؤش

    َ

    ىا ثْو   pىا nodeىا ىإ بىإ ش زىاnodeزىاريب

  • 8/18/2019 Data struct with c++.pdf

    27/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    27

     

    ا نو حار  اذ دذا ال:

     

    30

    p

     

    35

     

    40 20

     

    36

    c

  • 8/18/2019 Data struct with c++.pdf

    28/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    28

     ارر ٌ  :nodeا ر::ا هذ ٌد

     

    3

     

    3

     

    4

     

    2

     

    ا  ٌأر اnode:ورٌد أن رط اــ 

    Insert_l(node*f)

    {

    node*c;

    c=getnode( );

    c->info=70;

    l=f;while(l->link !=NULL)

      l=l->link;

      l->link=c;

      c->link=NULL;

    }

     7

     

    cبإخ

    َ

    بىا

     

    ب

    ّ

    إnew node ٌ  

    ؤش

    َ

    ىاي

    اىجبّبد او   nodeاى 

     

    ؤش

    َ

    ىا  ث lشؤَىا اىزْو  fش   ز  ز لىا

      اىَؤش  ازبثlعب ى بر اىبَخ اىل  إى أش ْش  ىا ّو   ر ْش fاىبَخ  أا  نبّخ  أه 

    .  ب  لىا بيَمث اىبَخ   ّ ئّْب ف  اىبَخ 

    اى  lطبىَب اع ح

    ٍ

    اىَؤش  ثْو   f  ىا  node

    اى 

     ىإ

     يب

     ش

     زىا

    nodeزىا

     ( اىبَخ إ و إى أش   ىإ بيرnodeز ش إى أش 

      ْرسق اى شاىبَخ(

     

    ّnodeب أشnullث  nodeثشثظ اع اىاى   اع  إ ث َْأش  اىبَخ   c ث  nodeرشرجظ 

    شأ

     

    اىب lثشثظ اع اى ث اىز يذ إى أش nodeبّْ أ  زىا

     

  • 8/18/2019 Data struct with c++.pdf

    29/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    29

     

  • 8/18/2019 Data struct with c++.pdf

    30/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    31

     

    ********************************************************************************************

    :صا ا ٌد   رص  مو اد 

    Node* AddItemFront(int x, Node *L){

    Node *P;

    P = new(Node);P -> Data = x;P -> Next = L;

    L = P;return L;

    }

  • 8/18/2019 Data struct with c++.pdf

    31/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    3

    Node* AddItemRear(int x, Node *L)

     {

    Node *P, *Q;

    if (L = = NULL)

     {

    Q = new(Node);

    Q -> Data = x;

    Q -> Next = NULL;

    L = Q;

     }

    else

     {P = L;

    while (P->Next != NULL)

     {

    P = P -> Next;

     }

    Q = new(Node);

    Q -> Data = x;

    Q -> Next = NULL;

    P -> Next = Q; }

    return L;

     } 

     رص  مو ادٌ:صا ا  

  • 8/18/2019 Data struct with c++.pdf

    32/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    32

    :صا

     ا

     دال

     صر

     أي

     ن

     ث

     وم

     اد

     

    :صا ا لاد رص يأ فذ مو اد 

    bool SearchItem(int x, Node *L){

    Node *P = L;if (P == NULL)

    return false;else if (P -> Data == x)

    return true;else 

    return SearchItem(x, P -> Next);}

    Node* DeleteItem(int x, Node *L)

    {

    Node *P = L, *Q;

    if (P -> Data == x)

    {

    L = L ->Next;delete P;

    }

    else 

    {

    while ((P->Next)->Data != x)

    P = P -> Next;

    Q = P -> Next;

    P -> Next = Q -> Next;

    delete Q;

    }

    return L;

  • 8/18/2019 Data struct with c++.pdf

    33/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    33

    :صا ا رص ب مو اد 

    :ا زرا ٌرط  دا وم رز ا اص دام 

    Node* InvertList(Node *L)

    {

    Node *P = L;

    Node *Q = NULL;

    Node *R;

    while (P != NULL){

    R = new(Node);

    R -> Data = P->Data ;

    R -> Next = Q;

    Q = R;

    P = P->Next;

    }

    return Q;

    }

    Node* SortList(Node *L){

    Node *P;int np;

    int temp;do 

    {

    np = 0;P = L;

    while (P->Next != NULL){

    if (P->Data > (P->Next)->Data){

    temp = P->Data;P->Data = (P->Next)->Data;

    (P->Next)->Data = temp;np++;

    }P = P->Next;

    }} while (np > 0);

    return L;}

  • 8/18/2019 Data struct with c++.pdf

    34/58

  • 8/18/2019 Data struct with c++.pdf

    35/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    35

    :(Doubly-linked lists)نٌا اوام اص ذات  

    :(Doubly-linked lists) ام

      ال

    عد تريف ا مة بد من اعن عن م شر اى اول

     اق مة وم شر حو اخر ا مة مثل:

    //****************************او ا ٌاد   رص   موٌ  ر ن

     ا

     صر

     ورض

     ا

     

    ٌ

     

     صر

     ا

     ر

    ٌ

    ا

     ن

     ا

     صر

     ورض

     ر

    ٌ

    ا

     ا

      اول وذف أي صر ن ا:اول

    #include  using namespace std;struct Node

    {

    struct Node

    {

    Node *Prev;

    int D ata;

    Node *N ext;

    }

    struct Dbl_list

    {

    Node *F irst;

    Node *L ast;

    }

  • 8/18/2019 Data struct with c++.pdf

    36/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    36

    Node *Prev;

    int Data;Node *Next;};

    struct Dbl_List{Node *First;Node *Last;};Dbl_List AddFront(int x, Dbl_List L){

    Node *P ;if (L.First == NULL){P = new(Node);P->Prev = NULL;P->Data = x;

    P->Next = NULL;L.First = P;L.Last = P;}

    else {

    P = new(Node);P->Prev = NULL;P->Data = x;P->Next = L.First;L.First->Prev = P;L.First = P;}

    return L;

  • 8/18/2019 Data struct with c++.pdf

    37/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    37

    }

    Dbl_List AddRear(int x, Dbl_List L){Node *P ;

    if (L.First == NULL){P = new(Node);P->Prev = NULL;P->Data = x;P->Next = NULL;L.First = P;

    L.Last = P;}else {P = new(Node);P->Prev = L.Last;

    P->Data = x;P->Next = NULL;L.Last->Next = P;L.Last = P;

    }return L;

    }void ShowListFarward(Dbl_List L){Node * P = L.First;while (P != NULL){cout

  • 8/18/2019 Data struct with c++.pdf

    38/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    38

    }

    coutNext = NULL;

    delete P;

  • 8/18/2019 Data struct with c++.pdf

    39/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    39

    }

    else {P = L.First;

    while((P != NULL)&&(P->Data != x))P = P -> Next;if (P == NULL)coutNext)->Prev = P->Prev;delete P;}}}return L;

    }main(){Dbl_List L;

    L.First = NULL;L.Last = NULL;

    L = AddFront(26,L);L = AddFront(16,L);L = AddRear(36,L);L = DeleteItem(26,L);ShowListFarward(L);}

  • 8/18/2019 Data struct with c++.pdf

    40/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    41

     م

     صرة

     اواد

     

     ون

     ت

     واد

     و

    ٌ

    او

     اك

     ر

     ذا

    اٌل ء:  ون ء   ٌاواد ب #include 

    //******************************* const int size=5;

    //******************************* struct stack

    {int top;int item[size];

    int rear;int front;

    stack *First;stack *Last;

    stack *Prev;

    int Data;stack *Next;

    }ps;//***************************** 

    /*struct Dbl_List { 

    Node *First; Node *Last; 

    }; //***************************** 

    struct Node {Node *Prev; 

    int Data; Node *Next; 

    };*/ //***************************** 

    void initial(struct stack *ps)

    {ps->top=-1;

    ps->front=0; //front =Null; ps->rear=-1;

    }//****************************** 

    void push(struct stack *ps,int m){if(ps->toptop)++;ps->item[ps->top]=m;}

    else cout

  • 8/18/2019 Data struct with c++.pdf

    41/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    4

    //******************************** 

    int insert ( stack*ps,int e )

    {if((ps->rear)>size)

    coutrear+1;ps->item[ps->rear]=e;

    }}//**************************** 

    void pop(struct stack *ps){if(ps->top>(-1))

    {couttop]front;irear;i++)cout

  • 8/18/2019 Data struct with c++.pdf

    42/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    42

    P->Prev = NULL;

    P->Data = x;

    P->Next = NULL;L.First = P;

    L.Last = P;}

    else {

    P = new(stack);P->Prev = NULL;

    P->Data = x;P->Next = L.First;

    L.First->Prev = P;L.First = P;

    }return L;

    }

    //********************************** stack AddRear(int x, stack L)

    {stack *P ;

    if (L.First == NULL){

    P = new(stack);P->Prev = NULL;

    P->Data = x;P->Next = NULL;

    L.First = P;L.Last = P;

    }

    else {

    P = new(stack);P->Prev = L.Last;

    P->Data = x;P->Next = NULL;

    L.Last->Next = P;L.Last = P;

    }return L;

    }//********************************** 

    void ShowListFarward(stack L)

    {

  • 8/18/2019 Data struct with c++.pdf

    43/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    43

    stack * P = L.First;

    while (P != NULL)

    {cout Next;

  • 8/18/2019 Data struct with c++.pdf

    44/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    44

    if (P == NULL)

    coutNext)->Prev = P->Prev;

    delete P;}

    }}

    return L;}

    /*********************************** int SearchItem(int x, stack *L) 

    {cin>>x; stack *P = L; 

    if (P == NULL) 

    return false; else 

    if (P -> Data == x) return true; 

    else return SearchItem(x, P -> Next); 

    } */ 

    //************************************ 

    اىْبش ثيت ر اىخ// اىَيخ  بثخ ٍ

    ىَو   اىجة stack* InvertList(stack *L)

    {

    stack *P = L;stack *Q = NULL;

    stack *R;while (P != NULL)

    {R = new(stack);

    R -> Data = P->Data ;R -> Next = Q;

    Q = R;P = P->Next;

    }return Q;

    }//************************************ 

    int main()

  • 8/18/2019 Data struct with c++.pdf

    45/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    45

    {

    stack L;

    L.First = NULL;L.Last = NULL;

    int n, op, x;;initial(&ps);

    do{cout>op;

    switch(op){case 1:;

    {cin>>n;push(&ps,n);

    }

    break;case 2:

    pop(&ps);break;

    case 3:coutn;insert(&ps,n);

    break;case 4:

    cout

  • 8/18/2019 Data struct with c++.pdf

    46/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    46

    cout>x; I//nvertList(stack); 

    break;*/ 

    default:cout

  • 8/18/2019 Data struct with c++.pdf

    47/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    47

    }

    dnode*creatnode()

    {return((dnode*)malloc(sizeof(dnode)));

    }//*********************************

    void addbeg(dnode*&f,dnode*n){

    if(f==NULL){

    n->rlink=f;n->llink=NULL;

    f=n;}

    else {

    n->rlink=f;

    n->llink=NULL;f->llink=n;

    f=n;}

    }void addend(dnode*f,dnode*n)

    {dnode*p=NULL;

    p=f;while(p->rlink!=NULL)

    p=p->rlink;n->llink=p;

    n->rlink=NULL;

    p->rlink=n;}

    void addaft(dnode*f,dnode*n,int e){

    dnode*p=NULL;p=f;

    while(p!=NULL&& p->data!=e)p=p->rlink;

    if(p==NULL)coutrlink=p->rlink;

  • 8/18/2019 Data struct with c++.pdf

    48/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    48

    p->rlink->llink=n;

    p->rlink=n;

    }}

    void visilist(dnode*f){

    dnode*p=NULL;p=f;

    if(p==NULL)coutrlink;

    if(p==NULL)cout

  • 8/18/2019 Data struct with c++.pdf

    49/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    49

    n->llink=p->llink;

    n->rlink=p;

    p->llink->rlink=n;p->llink=n;

    }}

    void dbeg(dnode*&f){

    dnode*d=NULL;d=f;

    f=f->rlink;f->llink=NULL;

    free(d);}

    void dend(dnode*f){

    dnode*p=NULL;

    p=f;while(p->rlink!=NULL)

    p=p->rlink;p->llink->rlink=NULL;

    free(p);}

    void dmid(dnode*f,int e){

    dnode*d=NULL;d=f;

    while(d->data!=e&& d->rlink!=NULL)d=d->rlink;

    if( d->rlink==NULL)

    coutrlink=d->rlink;d->rlink->llink=d->llink;

    free(d);}

    }void danywhere(dnode*&f,int key)

    {dnode*d=NULL;

    dnode*pf=NULL;

    dnode*p=NULL;

  • 8/18/2019 Data struct with c++.pdf

    50/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    51

    p=f;

    d=f;

    pf=f;int found=0;

    while(d!=NULL&&!found){

    if(d->data==key)found=1;

    else {

    p=f;d=d->rlink;

    }}

    if(!found&&d==NULL)coutllink=NULL;free(d);

    }else 

    {d->llink->rlink=d->rlink;

    d->rlink->llink=d->llink;free(d);

    }

    }}

    main(){

    //clrscr(); dnode*f=intl();

    dnode*n=NULL;int x;

    int op;

    do {

    cout

  • 8/18/2019 Data struct with c++.pdf

    51/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    5

    7 to delete from begin \n 8 to delete from end\n 9 to delete from

    mid list \n 10 to delete any where \n 11 to show list from last

    \n";cin>>op;

    switch(op){

    case 1:n=creatnode();

    coutn->data;

    addbeg(f,n);break;

    case 2:n=creatnode();

    coutn->data;

    addend(f,n);

    break;case 3:

    n=creatnode();coutn->data;coutx;addaft(f,n,x);

    break;case 4:

    visilist(f);break;

    case 6:

    int y;n=creatnode();

    coutn->data;

    couty;

    addbef(f,n,y);break;

    case 7:dbeg(f);

    break;case 8:

    dend(f);

    break;

  • 8/18/2019 Data struct with c++.pdf

    52/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    52

    case 9:

    int z;

    coutz;

    dmid(f,z);break;

    case 10:int t;

    coutt;

    danywhere(f,t);break;

    case 11:revlist(f);

    break;}

    }while(op!=5);

    }

    //***************************************

    وم

    ٌ

    و وا ٌول أي رم   ٌادا   ا ٌ ٌوم   ر ٌاو  ٌادا  ٌا د أي رم واذف ن  وٌوم  رض 

     اداد

     وع

     د

    ٌ

    او

     ا

     م

    ٌ

    و

     اصر

     ب

    ٌ

    رو

     واوط

    :ٌدراو  ٌوزا  #include //using namespace std; #include 

    #include struct sll{int data;

    struct sll*llink;};sll*f;

    sll*creatnode(){return((sll*)malloc(sizeof(sll)));}

    sll*intl(){f=NULL;return f;}

    void addbeg(sll*&f,sll*n){

  • 8/18/2019 Data struct with c++.pdf

    53/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    53

    n->llink=f;f=n;}void addend(sll*f,sll*n)

    {sll*p=NULL;p=f;

    while(p->llink!=NULL)

    p=p->llink;p->llink=n;n->llink=NULL;

    }void addaft(sll*f,sll*n,int e){sll*p=NULL;p=f;while(p->data!=e&&p!=NULL)p=p->llink;if(p!=NULL){

    n->llink=p->llink;p->llink=n;

    }else coutllink;}if(p!=NULL){

    n->llink=p;old->llink=n;}else 

    cout

  • 8/18/2019 Data struct with c++.pdf

    54/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    54

    sll*d=NULL;d=f;f=f->llink;free(d);

    }void dend(sll*f){

    sll*p=NULL;

    sll*d=NULL;p=f;while(p->llink!=NULL)

    {d=p;p=p->llink;}d->llink=NULL;}void dlend(sll*f){

    sll*d;

    sll*p;d=f;

    p=f;while(p->llink!=NULL){

    d=p;

    p=p->llink;}d->llink=NULL;free(p);

    }

    void dmid(sll*f,int key){

    sll*p=NULL;sll*d=NULL;p=f;while(p->llink->data!=key&&p!=NULL)

    p=p->llink;d=p->llink;if(p!=NULL)p->llink=d->llink;else coutllink=f;f=n;

    }else {if(f==NULL)

    {

  • 8/18/2019 Data struct with c++.pdf

    55/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    55

    n->llink=f;f=n;}else 

    {p=f;while(p->llink!=NULL)

    p=p->llink;

    n->llink=NULL;p->llink=n;p=n;

    }}}//******************************** void div_list(sll*f,int e){sll*p=NULL;sll*p2=NULL;sll*f2=NULL;

    p=f;while(p->data!=e)

    p=p->llink;f2=p->llink;p2=p->llink;p->llink=NULL;

    coutllink;}

    cout

  • 8/18/2019 Data struct with c++.pdf

    56/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    56

    coutop;switch(op){case 1:

    n=creatnode();coutn->data;addbeg(f,n);break;case 2:

    n=creatnode();coutn->data;coutx;

    addaft(f,n,x);break;case 3:n=creatnode();

    coutn->data;addend(f,n);break;

    case 4:

  • 8/18/2019 Data struct with c++.pdf

    57/58

    : ىش َس ي-ا اىبىت جا خ

    ٍ

    بب

    ٍ

    ي

    َ

    ىا رنْىب  /ميخ اىسبة  ْب

     

    57

    coutdata;odev(f,n);break;

    case 11:

    int e;coute;div_list(f,e);break;case 12:

    findsum(f);break;case 13:rev_list(f);break;case 14: dlend(f);break;

    }}while(op!=5);}

  • 8/18/2019 Data struct with c++.pdf

    58/58

     

    ص د ٌٌ : د ارن  اداد اطبءص 

    وا

     

    ٌ

    ووو

     اوب

     

    ٌ

     ىوتو مظ م(Information System)

     

     ام

     ووردا

     اوا

     ض

     ن

     دة

     ن

    واغب ن رة 

     

    د/ ل وي ـ ـ ـ ـ ـ ـ ـ /

    أ/ روة ادي 

    ن ارع وتان واطؤأ  وود 

    ورا دٌرا   لصاو

    [email protected]اٌس وك   وا

    http://www.facebook.com/hnoon2015ص ٌ د ارن 

    mailto:[email protected]://www.facebook.com/hnoon2015http://www.facebook.com/hnoon2015http://www.facebook.com/hnoon2015mailto:[email protected]:[email protected]