Presentasi Struktur Data

download Presentasi Struktur Data

of 173

Transcript of Presentasi Struktur Data

  • 8/17/2019 Presentasi Struktur Data

    1/173

    Linked List

  • 8/17/2019 Presentasi Struktur Data

    2/173

    Malloc

    • Memory Allocation (malloc) adalahsebuah fungsi fasilitas untukmemesan tempat secara berurutan

    untuk tipe data dinamis(pointer)• Nilai balik dari memory allocation

    adalah void *

  • 8/17/2019 Presentasi Struktur Data

    3/173

    Problem

    • Bagaimana ika kita pesan !""""alamat berurutan# – Akan selalu gagal$

     – %ntuk itu kita lakukan memory allocationuntuk setiap satu data$

    • Bagaimana agar data pertama tetapberhubungan dengan data kedua#

     – &ita gunakan pointer untukmenghubungkan

  • 8/17/2019 Presentasi Struktur Data

    4/173

     'he Linked List data struktur

    [0] [1] [2]array

    A B CArray

    linked

    A B CLinked list

    Linked lists terbatas

    (Jumlah maksimum item hanya dibatasi oleh memori)

    node

  • 8/17/2019 Presentasi Struktur Data

    5/173

    Array vs Linked List

      Array : int A[3] Linked List : struct list *A;

     A[2] A[1]

     A[0]

     A(data 3)

     A(data 2)

     A(data 1)

    Linked lists terbatas

    (Jumlah maksimum item hanya dibatasi oleh memori)

  • 8/17/2019 Presentasi Struktur Data

    6/173

    eklarasi

    struct simpul

    char nama+!,-int nrp-

    struct simpul *ne.t-

    /-struct simpul *uung-

    namanrp

    net

    simpul

    data

    p!inter y"

    menun#uksimpul lain

  • 8/17/2019 Presentasi Struktur Data

    7/173

    Membangun Linked List

    Apa yang harus dilakukan#

    0$ eklarasi

    +$ Memory allocation1$ Mengisi data

    2$ Menyiapkan untuk dihubungkan

    dengan data baru berikutnya

  • 8/17/2019 Presentasi Struktur Data

    8/173

    Bagaimana#

    0$ struct simpul *uung-

    +$ uung3(struct simpul*)malloc(si4eof(struct simpul))-

    1$ printf(5Nama 65)-scanf(57s589uung:;nama)-

    2$ printf(5N

  • 8/17/2019 Presentasi Struktur Data

    9/173

    =elanutnya

    0$ uung3(struct simpul*)malloc(si4eof(struct simpul))-

    +$ printf(5Nama 65)-scanf(57s589uung:;nama)-

    1$ printf(5N

    ;")

    uung:;ne.t3tampung-

    tampung3uung-

    /

    nama2

    nrp2

    net

    u#un"

    nama1

    nrp1

    net $%LL

    tampun"

    nama2

    nrp2

    net

    u#un"

    tampun"

  • 8/17/2019 Presentasi Struktur Data

    10/173

    =elanutnya

    0$ uung3(struct dtnilai*)malloc(si4eof(struct dtnilai))-

    +$ printf(5Nama 65)-scanf(57s589uung:;nama)-

    1$ printf(5N

    ;")

    uung:;ne.t3tampung-

    tampung3uung-

    /

    nama3

    nrp3

    net

    u#un"

    nama1

    nrp1

    net $%LL

    tampun"

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    u#un" tampun"

  • 8/17/2019 Presentasi Struktur Data

    11/173

    =ampai iterasi keempat

    nama1

    nrp1

    net $%LL

    tampun"

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

  • 8/17/2019 Presentasi Struktur Data

    12/173

    Membaca (Menampilkan)

    nama1

    nrp1

    net $%LL

    tampil

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    tampil ' u#un";

    ile (tampil+$%LL),, -un"si menampilkan

    tampil ' tampil .+ net;

    tampil tampil tampil tampil

  • 8/17/2019 Presentasi Struktur Data

    13/173

    Mencari simpul ttt$

    nama1

    nrp1

    net $%LL

      cari

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    cari ' u#un";

    ile (cari.+nama/'nama2)

    cari ' cari.+net;

      cari   cari

  • 8/17/2019 Presentasi Struktur Data

    14/173

    Menyisipkan sebagai simpulterakhir

    nama1

    nrp1

    net

      cari

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    cari ' u#un"

    ile (cari.+net /'$%LL)

      cari ' cari.+net;

    cari.+net'aru;nama

    nrp

    net

    aru

    $%LL

      cari cari   cari

    $%LL

  • 8/17/2019 Presentasi Struktur Data

    15/173

    Menghapus simpul ttt$

    nama1

    nrp1

    net $%LL

      apus

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    apus ' u#un";

  • 8/17/2019 Presentasi Struktur Data

    16/173

    Menghapus simpul ttt$

    nama1

    nrp1

    net $%LL

      apus

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    ile (apus.+nama /' nama2)

    sl ' apus;

    apus'apus.+net;

  • 8/17/2019 Presentasi Struktur Data

    17/173

    Menghapus simpul ttt$

    nama1

    nrp1

    net $%LL

      apus

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    ile (apus.+nama /' nama2)

    sl'apus;

    apus'apus.+net;

      sl

  • 8/17/2019 Presentasi Struktur Data

    18/173

    Menghapus simpul ttt$

    nama1

    nrp1

    net $%LL

      apus

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    ile (apus.+nama /' nama2)

    sl'apus;

    apus'apus.+net;

      sl

  • 8/17/2019 Presentasi Struktur Data

    19/173

    Menghapus simpul ttt$

    nama1

    nrp1

    net $%LL

      apus

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    sl.+net'apus.+net;

      sl

  • 8/17/2019 Presentasi Struktur Data

    20/173

    Menghapus simpul ttt$

    nama1

    nrp1

    net $%LL

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    -ree(apus);

      sl

  • 8/17/2019 Presentasi Struktur Data

    21/173

    Menyisipkan setelah simpulttt$

    nama1

    nrp1

    net $%LL

      cari

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    cari ' u#un"

    namanrp

    net

    aru

  • 8/17/2019 Presentasi Struktur Data

    22/173

    Menyisipkan setelah simpulttt$

    nama1

    nrp1

    net $%LL

      cari

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    ile (cari.+nama/'nama3)

    cari ' cari.+net;aru.+net ' cari.+net;

    namanrp

    net

    aru

  • 8/17/2019 Presentasi Struktur Data

    23/173

    Menyisipkan setelah simpulttt$

    nama1

    nrp1

    net $%LL

      cari

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    cari.+net ' aru; namanrp

    net

    aru

  • 8/17/2019 Presentasi Struktur Data

    24/173

    Menyisipkan sebelumsimpul ttt$

    nama1

    nrp1

    net $%LL

      cari

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    cari ' u#un"

    namanrp

    net

    aru

  • 8/17/2019 Presentasi Struktur Data

    25/173

    Menyisipkan sebelumsimpul ttt$

    nama1

    nrp1

    net $%LL

      stl

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    cari ' u#un";

    ile (cari.+nama/'nama1)  stl'cari;

      cari'cari.+net;

    namanrp

    net

    aru

      cari

  • 8/17/2019 Presentasi Struktur Data

    26/173

    Menyisipkan sebelumsimpul ttt$

    nama1

    nrp1

    net $%LL

      stl

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    cari ' u#un";

    ile (cari.+nama/'nama1)  stl'cari;

      cari'cari.+net;

    namanrp

    net

    aru

      cari

  • 8/17/2019 Presentasi Struktur Data

    27/173

    Menyisipkan sebelumsimpul ttt$

    nama1

    nrp1

    net $%LL

      stl

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    cari ' u#un";

    ile (cari.+nama/'nama1)  stl'cari;

      cari'cari.+net;

    namanrp

    net

    aru

      cari

  • 8/17/2019 Presentasi Struktur Data

    28/173

    Menyisipkan sebelumsimpul ttt$

    nama1

    nrp1

    net $%LL

      stl

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    aru.+net ' cari;

    namanrp

    net

    aru

      cari

  • 8/17/2019 Presentasi Struktur Data

    29/173

    Menyisipkan sebelumsimpul ttt$

    nama1

    nrp1

    net $%LL

      stl

    nama2

    nrp2

    net

    nama3

    nrp3

    net

    nama&

    nrp&

    net

    u#un"

    stl.+net ' aru;

    namanrp

    net

    aru

      cari

  • 8/17/2019 Presentasi Struktur Data

    30/173

    ?include >iostream;

    ?include >stdlib$h;

    ?include >string;

    ?include >conio$h;

    ?include >fstream;

    ?include >time$h;

    ?include >cstdlib;

    ?include >iomanip; @@set()

    using namespace std-

    struct node

      int data-  node* ne.t- @@ untuk menghubungkan dengan node lain8 tipe data dibuat sama seperi aturanpenggunaan pointer$

    /-

    node* head-

    node* tail-

    node* curr-

    node* entry-

    node* del-

    void inisialisasi()

      head 3 N%LL-

      tail 3 N%LL-

    /

    void input(int dt)

      entry 3 (node* )malloc(si4eof(node))- @@alokasi memori

      entry:;data 3 dt-

      entry:;ne.t 3 N%LL-

      if(head33N%LL)

     

      head 3 entry-

      tail 3 head-

      /

      else

     

      tail:;ne.t 3 entry-

      tail 3 entry-

      /

    /

    void hapus()

      int simpan-

      if(head33N%LL)

     

      cout>>5nlinked list kosong8 penghapusan tidak bisa dilakukan5>>endl-

      /

      else

     

      simpan 3 head :;data-

      cout>>5ndata yang dihapus adalah 5>>simpan>>endl-

      @@hapus depan

      del 3 head-

      head 3 head:;ne.t-

      delete del-

      /

    /

    void cetak()

      curr 3 head-

      if(head 33 N%LL)

      cout>>5ntidak ada data dalam linked list5>>endl-

      else

     

      cout>>5nata yang ada dalam linked list adalah5>>endl-

      cout>>set(C)-

      hile(currD3N%LL)

     

      cout>>curr:;data>>5:;5-

      curr 3 curr:;ne.t-

      /

      cout>>endl-  /

    /

    void menu()

      char pilih8 ulang-

      int data-

      do

     

      system(5cls5)-

      cout>>5=ENFLG LEN&G LE=' NHN IEendl-

      cout>>5:::::::::::::::::::::::::::::::5>>endl-

      cout>>5Menu 6 5>>endl-

      cout>>50$ Enput data5>>endl-

      cout>>5+$ Japus data5>>endl-

      cout>>51$ Ietak ata5>>endl-

      cout>>52$ G.it5>>endl-

      cout>>5Masukkan pilihan Anda 6 5-

      cin;;pilih-

      sitch(pilih)

     

      case K0K 6

      cout>>5nMasukkan data 6 5-

      cin;;data-

      input(data)-

      break-

      case K+K 6

      hapus()-

      break-

      case K1K 6

      cetak()-

      break-

      case K2K 6

      e.it(")-

      break-

      default 6

      cout>>5nPilih ulang5>>endl-

      /

      cout>>5n&embali ke menu#(y@n)5-

      cin;;ulang-

      /hile(ulang33KyK ulang33KK)-

    /

    int main()

      inisialisasi()-

      menu()-

      return GE'O=%IIG==-

    /

  • 8/17/2019 Presentasi Struktur Data

    31/173

  • 8/17/2019 Presentasi Struktur Data

    32/173

  • 8/17/2019 Presentasi Struktur Data

    33/173

    ouble Linked List

  • 8/17/2019 Presentasi Struktur Data

    34/173

    Hperasi ouble Linked List

    • Membangun ouble Linked List

    • Membaca list8 dalam dua arah.

    •Mencari simpul tertentu• Menghapus simpul tertentu

    • Menyisipkan sebagai simpul pertama

    • Menyisipkan simpul di tengah

  • 8/17/2019 Presentasi Struktur Data

    35/173

    ouble Linked List

    ead

    0 1 2 3 &

    tail

  • 8/17/2019 Presentasi Struktur Data

    36/173

    eklarasi

    struct simpul

    char nama+!,-

    int nrp-struct simpul *before-

    struct simpul *ne.t-

    /-

    struct simpul *baru-

    nama

    nrp

    e-!re

    simpul

    data

    p!inter y" menun#uk simpul

    seelumnyanetp!inter y" menun#uk simpul

    erikutnya

  • 8/17/2019 Presentasi Struktur Data

    37/173

    Membangun Linked List

    Apa yang harus dilakukan#

    0$ eklarasi

    +$ Memory allocation1$ Mengisi data

    2$ Menyiapkan untuk dihubungkan

    dengan data baru berikutnya

  • 8/17/2019 Presentasi Struktur Data

    38/173

    Bagaimana#

    0$ struct simpul *baru-

    +$ baru3(struct simpul*)malloc(si4eof(struct simpul))-

    1$ printf(5Nama 65)-scanf(57s589baru:;nama)-

    2$ printf(5N

  • 8/17/2019 Presentasi Struktur Data

    39/173

    Bagaimana#

    0$ struct simpul *baru-

    +$ baru3(struct simpul*)malloc(si4eof(struct simpul))-

    1$ printf(5Nama 65)-scanf(57s589baru:;nama)-

    2$ printf(5N

  • 8/17/2019 Presentasi Struktur Data

    40/173

    Bagaimana#

    0$ struct simpul *baru-

    +$ baru3(struct simpul*)malloc(si4eof(struct simpul))-

    1$ printf(5Nama 65)-scanf(57s589baru:;nama)-

    2$ printf(5N

  • 8/17/2019 Presentasi Struktur Data

    41/173

    Bagaimana#

    0$ struct simpul *baru8 *head8 *tail-

    +$ baru3(struct simpul*)malloc(si4eof(struct simpul))-

    1$ printf(5Nama 65)-scanf(57s589baru:;nama)-

    2$ printf(5N

  • 8/17/2019 Presentasi Struktur Data

    42/173

    =elanutnya0$ baru3(struct simpul*)malloc(si4eof(struct simpul))-

    +$ printf(5Nama 65)-scanf(57s589baru:;nama)-

    1$ printf(5N

  • 8/17/2019 Presentasi Struktur Data

    43/173

    =elanutnya0$ baru3(struct simpul*)malloc(si4eof(struct simpul))-

    +$ printf(5Nama 65)-scanf(57s589baru:;nama)-

    1$ printf(5N

  • 8/17/2019 Presentasi Struktur Data

    44/173

    =elanutnya0$ baru3(struct simpul*)malloc(si4eof(struct simpul))-

    +$ printf(5Nama 65)-scanf(57s589baru:;nama)-

    1$ printf(5N

  • 8/17/2019 Presentasi Struktur Data

    45/173

    =elanutnya0$ baru3(struct simpul*)malloc(si4eof(struct simpul))-

    +$ printf(5Nama 65)-scanf(57s589baru:;nama)-

    1$ printf(5N

    ;")

    baru:;ne.t3N%LL-

    tail:;ne.t3baru-

    baru:;before3tail-

    tail3baru-

    /

    nama2

    nrp2

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    nama2

    nrp2

    e-!re

    aru

    net

    net net

    $%LL

  • 8/17/2019 Presentasi Struktur Data

    46/173

    =ampai iterasi keempat

    nama&

    nrp&e-!re

    $%L

    tail

    nama1

    nrp1e-!re

    ead

    net net

    nama2

    nrp2e-!re

    net

    nama3

    nrp3e-!re

    net$%LL

  • 8/17/2019 Presentasi Struktur Data

    47/173

    Membaca (EH)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net$%LL

    aca45 ' ead;

    aca45

  • 8/17/2019 Presentasi Struktur Data

    48/173

    Membaca (EH)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net$%LL

    ile (aca45/'$%LL)

    ,, -un"si menampilkan

    aca45 ' aca45 .+ net;

    aca45

  • 8/17/2019 Presentasi Struktur Data

    49/173

    Membaca (EH)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net$%LL

    ile (aca45+$%LL)

    ,, -un"si menampilkan

    aca45 ' aca45 .+ net;

    aca45

  • 8/17/2019 Presentasi Struktur Data

    50/173

    Membaca (EH)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net$%LL

    ile (aca45+$%LL)

    ,, -un"si menampilkan

    aca45 ' aca45 .+ net;

    aca45

  • 8/17/2019 Presentasi Struktur Data

    51/173

    Membaca (EH)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net$%LL

    ile (aca45+$%LL)

    ,, -un"si menampilkan

    aca45 ' aca45 .+ net;

    aca45

  • 8/17/2019 Presentasi Struktur Data

    52/173

    Membaca (LEH)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net$%LL

    acaL45 ' tail;

    acaL45

  • 8/17/2019 Presentasi Struktur Data

    53/173

    Membaca (LEH)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net$%LL

    ile (acaL45+$%LL)

    ,, -un"si menampilkan

    acaL45 ' acaL45 .+ e-!re;

    acaL45

  • 8/17/2019 Presentasi Struktur Data

    54/173

    Membaca (LEH)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    ile (acaL45+$%LL)

    ,, -un"si menampilkan

    acaL45 ' acaL45 .+ e-!re;

    acaL45

  • 8/17/2019 Presentasi Struktur Data

    55/173

    Membaca (LEH)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    ile (acaL45+$%LL)

    ,, -un"si menampilkan

    acaL45 ' acaL45 .+ e-!re;

    acaL45

  • 8/17/2019 Presentasi Struktur Data

    56/173

    Membaca (LEH)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    ile (acaL45+$%LL)

    ,, -un"si menampilkan

    acaL45 ' acaL45 .+ e-!re;

    acaL45

  • 8/17/2019 Presentasi Struktur Data

    57/173

    Mencari =impul 'ertentu

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    cari ' ead;

    cari

  • 8/17/2019 Presentasi Struktur Data

    58/173

    Mencari =impul 'ertentu

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    ile (cari.+nama/'nama3)

    cari ' cari .+ net;

    cari

  • 8/17/2019 Presentasi Struktur Data

    59/173

    Mencari =impul 'ertentu

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    ile (cari.+nama/'nama3)

    cari ' cari .+ net;

    cari

  • 8/17/2019 Presentasi Struktur Data

    60/173

    Mencari =impul 'ertentu

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    ile (cari.+nama/'nama3)

    cari ' cari .+ net;

    cari

  • 8/17/2019 Presentasi Struktur Data

    61/173

    Menghapus =impul 'ertentu (=impul epan)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    cari ' ead;

    cari

  • 8/17/2019 Presentasi Struktur Data

    62/173

    Menghapus =impul 'ertentu (=impul epan)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    cari ' ead;

    i-(cari.+nama''nama1)

    ead'ead.+net;

    cari

  • 8/17/2019 Presentasi Struktur Data

    63/173

  • 8/17/2019 Presentasi Struktur Data

    64/173

    Menghapus =impul 'ertentu (=impul epan)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    cari ' ead;

    i-(cari.+nama''nama)

    ead'ead.+net;

    ead.+e-!re'$%LL;

    -ree(cari);

    cari $%LL

  • 8/17/2019 Presentasi Struktur Data

    65/173

    Menghapus =impul 'ertentu (=impul epan)

    nama&

    nrp&

    e-!re

    $%LL

    tailead

    net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet

    cari ' ead;

    i-(cari.+nama''nama)

    ead'ead.+net;

    ead.+e-!re'$%LL;

    -ree(cari);

    $%LL

  • 8/17/2019 Presentasi Struktur Data

    66/173

    Menghapus =impul 'ertentu (=impul Akhir)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    cari'tail;

    cari

  • 8/17/2019 Presentasi Struktur Data

    67/173

    Menghapus =impul 'ertentu (=impul Akhir)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!renet$%LL

    tail'tail.+e-!re;

    cari

  • 8/17/2019 Presentasi Struktur Data

    68/173

    Menghapus =impul 'ertentu (=impul Akhir)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    tail'tail.+e-!re;

    tail.+net'$%LL;

    cari

  • 8/17/2019 Presentasi Struktur Data

    69/173

    Menghapus =impul 'ertentu (=impul Akhir)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    tail'tail.+e-!re;

    tail.+net'$%LL;

    -ree(cari);

    cari

  • 8/17/2019 Presentasi Struktur Data

    70/173

    Menghapus =impul 'ertentu (=impul Akhir)

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    Menghapus =impul 'ertentu (i

  • 8/17/2019 Presentasi Struktur Data

    71/173

    Menghapus =impul 'ertentu (i 'engah)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    cari'ead;

    cari

    Menghapus =impul 'ertentu (i

  • 8/17/2019 Presentasi Struktur Data

    72/173

    Menghapus =impul 'ertentu (i 'engah)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    ile (cari.+nama/'nama3)cari ' cari .+ net;

    cari

    Menghapus =impul 'ertentu (i

  • 8/17/2019 Presentasi Struktur Data

    73/173

    Menghapus =impul 'ertentu (i 'engah)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    ile (cari.+nama/'nama3)cari ' cari .+ net;

    cari

    Menghapus =impul 'ertentu (i

  • 8/17/2019 Presentasi Struktur Data

    74/173

    Menghapus =impul 'ertentu (i 'engah)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    ile (cari.+nama/'nama3)cari ' cari .+ net;

    cari

    Menghapus =impul 'ertentu (i

  • 8/17/2019 Presentasi Struktur Data

    75/173

    Menghapus =impul 'ertentu (i 'engah)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    cari.+e-!re.+net'cari.+net;

    cari

    Menghapus =impul 'ertentu (i

  • 8/17/2019 Presentasi Struktur Data

    76/173

    Menghapus =impul 'ertentu (i 'engah)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    cari.+net.+e-!re'cari.+e-!re;

    cari

    Menghapus =impul 'ertentu (i

  • 8/17/2019 Presentasi Struktur Data

    77/173

    Menghapus =impul 'ertentu (i 'engah)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    -ree(cari);

    cari

    Menghapus =impul 'ertentu (i

  • 8/17/2019 Presentasi Struktur Data

    78/173

    Menghapus =impul 'ertentu (i 'engah)

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet$%LL

  • 8/17/2019 Presentasi Struktur Data

    79/173

    atau

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    ile (cari.+nama/'nama3)cari ' cari .+ net;

    sl'cari.+e-!re;

    stl'cari.+net;

    carisl stl

    M h =i l '

  • 8/17/2019 Presentasi Struktur Data

    80/173

    Menghapus =impul 'ertentu

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    sl.+net'stl;

    carisl stl

    M h =i l ' t t

  • 8/17/2019 Presentasi Struktur Data

    81/173

    Menghapus =impul 'ertentu

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet

    nama3

    nrp3

    e-!renet$%LL

    sl.+net'stl;stl.+e-!re'sl;

    carisl stl

    M h =i l ' t t

  • 8/17/2019 Presentasi Struktur Data

    82/173

    Menghapus =impul 'ertentu

    nama&

    nrp&

    e-!re

    $%LL

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!renet$%LL

    cari.+e-!re.+net ' cari.+net;cari.+net.+e-!re ' cari.+e-!re;

    -ree(cari);

    Menyisipkan sebagai simpul

  • 8/17/2019 Presentasi Struktur Data

    83/173

    Menyisipkan sebagai simpulpertama

    nama&

    nrp&e-!re

    $%L

    tail

    nama1

    nrp1e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    Menyisipkan sebagai simpul

  • 8/17/2019 Presentasi Struktur Data

    84/173

    Menyisipkan sebagai simpulpertama

    nama&

    nrp&

    e-!re

    $%L

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sisip->before=NULL

    $%LL

    Menyisipkan sebagai simpul

  • 8/17/2019 Presentasi Struktur Data

    85/173

    Menyisipkan sebagai simpulpertama

    nama&

    nrp&

    e-!re

    $%L

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sisip->ne!t=head

    $%LL

    Menyisipkan sebagai simpul

  • 8/17/2019 Presentasi Struktur Data

    86/173

    Menyisipkan sebagai simpulpertama

    nama&

    nrp&

    e-!re

    $%L

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net

    nama

    nrp

    e-!re

    sisip

    net

    head->before=sisip

    $%LL

    Menyisipkan sebagai simpul

  • 8/17/2019 Presentasi Struktur Data

    87/173

    Menyisipkan sebagai simpulpertama

    nama&

    nrp&

    e-!re

    $%L

    tail

    nama1

    nrp1

    e-!re

    ead

    net net

    nama2

    nrp2

    e-!re

    net

    nama3

    nrp3

    e-!re

    net

    nama

    nrp

    e-!re

    sisip

    net

    head=sisip

    $%LL

    Menyisipkan stl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    88/173

    e y s p a s s putertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    Menyisipkan stl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    89/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    stl=head

    "hile(stl->nama#=nama$)

    stl=stl->ne!t

    stl

    Menyisipkan stl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    90/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sisip->before=stl

    stl

    Menyisipkan stl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    91/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sisip->before=stl

    sisip->ne!t=stl->ne!t

    stl

    Menyisipkan stl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    92/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sisip->before=stl

    sisip->ne!t=stl->ne!t

    stl->ne!t->before=sisip

    stl

    Menyisipkan stl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    93/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sisip->before=stl

    sisip->ne!t=stl->ne!t

    stl->ne!t->before=sisip

    stl->ne!t=sisip

    stl

    Menyisipkan sbl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    94/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    Menyisipkan sbl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    95/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sbl=head

    "hile(sbl->nama#=nama$)

    sbl=sbl->ne!t

    sl

    Menyisipkan sbl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    96/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sisip->ne!t=sbl

    sl

    Menyisipkan sbl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    97/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sisip->ne!t=sbl

    sisip->before=sbl->before

    sl

    Menyisipkan sbl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    98/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sisip->ne!t=sbl

    sisip->before=sbl->before

    sbl->before->ne!t=sisip

    sl

    Menyisipkan sbl$ simpul

  • 8/17/2019 Presentasi Struktur Data

    99/173

    y p ptertentu

    nama&nrp&

    e-!re

    $%LL

    tail

    nama1nrp1

    e-!re

    ead

    net net

    nama2nrp2

    e-!re

    net

    nama3nrp3

    e-!re

    net$%LL

    nama

    nrp

    e-!re

    sisip

    net

    sisip->ne!t=sbl

    sisip->before=sbl->before

    sbl->before->ne!t=sisip

    sbl->before=sisip

    sl

    ?include >iostream;

    ?include >stdlib$h;

    ?include >string;

    ?include >conio$h;

    ?include >fstream;

    ?include >time$h;

    ?include >cstdlib;

    i l d i i @@ ()

      cout>>5nLinked List kosong penghapusan tidak dapat dilakukan5>>endl-

    /

    void cetak()

      print 3 head-

  • 8/17/2019 Presentasi Struktur Data

    100/173

    ?include >iomanip; @@set()

    using namespace std-

    typedef struct node

      long data-

      node* ne.t- @@tipe data bertipe sama untuk menunuk ke node lain

      node* prev-

    /-

    @@buat variabel node

    node* head-

    node* tail-

    node* print-

    node* del-

    node* entry-

    void inisialisasi()

      head 3 N%LL-

      tail 3 N%LL-

    /

    int isGmpty()

      if(head 33 N%LL)

      return 0-

      else

      return "-

    /

    void input(int *dta)

      entry 3 ne node-

      entry:;data 3 *dta-

      entry:;ne.t 3 N%LL-  entry:;prev 3 N%LL-

      if(isGmpty()330)

     

      head 3 entry-

      head:;ne.t 3 N%LL-

      head:;prev 3 N%LL-

      tail3head-

      /

      else

     

      tail:;ne.t 3 entry-

      entry:;prev 3 tail-

      tail 3 entry-

      /

    /

    @@penghapusan data di belakang melalui head

    void hapus()

      int simpan-

      if(headD3N%LL) @@ika hanya kondisi ini saa maka akan teradi error karena disana ada synta. head:;prev 3 N%LL

     

      if(head:;ne.t D3 N%LL)

     

      del3head-

      simpan 3 head:;data-

      cout>>5n5>>simpan>>5 telah dihapus5>>endl-

      head 3 head:;ne.t-

      head:;prev 3 N%LL-

      delete del-

      /

      else

     

      simpan 3 head:;data-

      cout>>5n5>>simpan>>5 telah dihapus5>>endl-

      head 3 N%LL-

      /

      /

      else

    p -

      if(headD3N%LL)

     

      hile(printD3N%LL)

     

      cout>>5nt5>>print:;data-

      print 3 print:;ne.t-

      /

      /

      else

      cout>>5n'idak ada data dalam linked list5>>endl-

    /

    void menu()

      char pilih8 ulang-

      int data-

      do

     

      system(5IL=5)-

    menu 6

      cout>>5H%BLG LEN&G LE=' NHN IEendl-

      cout>>5:::::::::::::::::::::::::::::::5>>endl-

      cout>>5Menu6 5-

      cout>>5n0$ Gntry ata5-

      cout>>5n+$ Japus ata5-

      cout>>5n1$ Ietak ata5-

      cout>>5n2$ &eluar5-

      cout>>5nMasukkan pilihan Anda 6 5-

      cin;;pilih-

      sitch(pilih)

     

      case K0K 6

      cout>>5nMasukkan ata 6 5-

      cin;;data-

      input(9data)-

      cout>>5n5>>dat a>>5 telah ditambahkan5>>endl-

      break-

      case K+K 6

      hapus()-

      break-

      case K1K 6

      cetak()-

      break-

      case K2K 6

      cout>>5n'erima kasih telah menggunakan program ini5>>endl-

      e.it(GE'O=%IIG==)-

      break-  default 6

      cout>>5nPilih ulang5>>endl-

      goto menu-

      /

      cout>>5n&embali ke menu# (y@n)5-

      cin;;ulang-

      /hile(ulang33KyK ulang 33KK)-

    /

    int main()

      inisialisasi()-

      menu()-

      return GE'O=%IIG==-

    /

  • 8/17/2019 Presentasi Struktur Data

    101/173

  • 8/17/2019 Presentasi Struktur Data

    102/173

  • 8/17/2019 Presentasi Struktur Data

    103/173

    single linked list circular

    Single Linked List

  • 8/17/2019 Presentasi Struktur Data

    104/173

    Circular• =LLI adalah =ingle Linked List yang pointer ne.tnya

    menunuk pada dirinya sendiri$ Qika =ingle Linked Listtersebut terdiri dari beberapa node8 maka pointer ne.tpada node terakhir akan menunuk ke node terdepannya$

    • Pengertian:

     – =ingle 6 artinya Reld pointer:nya hanya satu buah saadan satu arah$

     – Linked List 6 artinya node:node tersebut salingterhubung satu sama lain$

     – Iircular 6 artinya pointer ne.t:nya akan menunuk pada

    dirinya sendiri sehingga berputar

    Elustrasi =LLI

  • 8/17/2019 Presentasi Struktur Data

    105/173

    Elustrasi =LLI

    • =etiap node pada linked list mempunyai

    Reld yang berisi pointer ke nodeberikutnya8 dan uga memiliki Reld yangberisi data$

    • Pada akhir linked list8 node terakhir akan

    menunuk ke node terdepan sehinggalinked list tersebut berputar$

    Deklarasi dan node baru SLLC

  • 8/17/2019 Presentasi Struktur Data

    106/173

    Deklarasi dan node baru SLLC

    eklarasi node

    ibuat dari struct berikut ini6

    typedef struct TNode{

    int data;

    TNode *next;

    };

    Pembentukan node baru

    igunakan keyord ne yang berarti mempersiapkan sebuah node baru

    berserta alokasi memorinya$

    TNode *baru;

    baru = new TNode;

    baru->data = databaru;

    baru->next = baru;

    =LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    107/173

    =LLI dengan JGA

    • ibutuhkan satu buah variabelpointer6 head

    • Jead akan selalu menunuk pada

    node pertama

    SLLC dengan HEAD

  • 8/17/2019 Presentasi Struktur Data

    108/173

    SLLC dengan HEAD

    eklarasi Pointer Penunuk &epala =ingleLinked List• Manipulasi linked list tidak bisa dilakukan

    langsung ke node yang dituu8 melainkan harus

    melalui node pertama dalam linked list$eklarasinya sebagai berikut6

    TNode *head;

    ungsi Enisialisasi =ingle LinkedList Iircular

    void init(){

    head = NULL;

    }

    =LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    109/173

    =LLI dengan JGA

    unction untuk mengetahui kosong tidaknya =LLIint isEmpty(){

    if(head == NULL) return 1;

    else return 0;

    }

    Penambahan data di depan• Penambahan node baru akan dikaitan di node palingdepan, namun pada saat pertama kali (data masihkosong)8 maka penambahan data dilakukan pada head nya$

    • Pada prinsipnya adalah mengkaitkan data baru denganhead8 kemudian head akan menunuk pada data barutersebut sehingga head akan tetap selalu menadi dataterdepan$ %ntuk menghubungkan node terakhir dengannode terdepan dibutuhkan pointer bantu$

    =LLI menggunakan Jead

  • 8/17/2019 Presentasi Struktur Data

    110/173

    =LLI menggunakan Jead

    void insertDepan(int databaru){

    TNode *baru,*bantu; baru = new TNode; baru->data = databaru;

     baru->next = baru;

    if(isEmpt()==!){

     "ead=baru; "ead->next="ead;#

    e$se { bantu = "ead;

     w"i$e(bantu->next%="ead){

     bantu=bantu->next;#

     baru->next = "ead;"ead = baru;

      bantu->next = "ead;#

     printf(&Data masu'n);

    #

    =LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    111/173

    =LLI dengan JGA

    =LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    112/173

    =LLI dengan JGA

    Penambahan data di belakang• Penambahan data dilakukan di belakang8

    namun pada saat pertama kali data langsungditunuk pada head:nya$

    • Penambahan di belakang lebih sulit karena kitamembutuhkan pointer bantu untuk mengetahuidata terbelakang8 kemudian dikaitkan dengandata baru$ %ntuk mengetahui data terbelakang

    perlu digunakan perulangan$

    =LLI dengan Jead

  • 8/17/2019 Presentasi Struktur Data

    113/173

    =LLI dengan Jead

    void insertBelakang (int databaru)  !"ode #baru,#bantu$baru % ne& !"ode$baru'data % databaru$baru'net % baru$i*(isE+pt()%%-)  .ead%baru$  .ead'net%.ead$

    /else

    bantu % .ead$&.ile(bantu'net 0% .ead)

    bantu%bantu'net$/bantu'net % baru$baru'net % .ead$

    /print*(1Data +asuk2n3)$

    /

    =LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    114/173

    =LLI dengan JGA

    =LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    115/173

    =LLI dengan JGA

    unction untuk menampilkan isi single linked listvoid tampil(){

    TNode *b;

    b = head;

    if(isEmpty()==0){

    do{

    printf(“%d “,b->data);

    b=b->next;

    }while(b!=head);

    printf(“\n”);

    } else printf("Masih kosong\n“);

    }

    =LLI dgn JGA

  • 8/17/2019 Presentasi Struktur Data

    116/173

    =LLI dgn JGA

    void hapusDepan (){TNode *hapus,*bantu;

    if (isEmpty()==0){

    int d;

    hapus = head;

    d = head->data;

    if(head->next != head){

    bantu = head;while(bantu->next!=head){

    bantu=bantu->next;

    }

    head = head->next;

    delete hapus;

    bantu->next = head;

    }else{

    head=NULL;

    }

    printf(“%d terhapus\n“,d);

    } else printf("Masih kosong\n“);

    }

    SLLC d HEAD

  • 8/17/2019 Presentasi Struktur Data

    117/173

    SLLC dengan HEADvoid hapusBelakang(){

    TNode *hapus,*bantu;if (isEmpty()==0){

    int d;

    hapus = head;

    if(head->next == head){

    head = NULL;

    }else{

    bantu = head;

    while(bantu->next->next != head){

    bantu = bantu->next;

    }

    hapus = bantu->next;

      d = bantu->data;

    bantu->next = head;delete hapus;

    }

    printf(“%d terhapus\n“,d);

    } else printf("Masih kosong\n“);

    }

    SLLC dengan HEAD

  • 8/17/2019 Presentasi Struktur Data

    118/173

    g

    =LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    119/173

    =LLI dengan JGA

    unction untuk menghapus semua elemen LinkedList

    void clear(){

    TNode *bantu,*hapus;

    bantu = head;

    while(bantu->next!=head){

    hapus = bantu;

    bantu = bantu->next;

    delete hapus;

    }head = NULL;

    }

    SLLC dengan HEAD dan !A4L

  • 8/17/2019 Presentasi Struktur Data

    120/173

    SLLC dengan HEAD dan !A4L

    • ibutuhkan dua buah variabel pointer6head dan tail

    • Jead akan selalu menunuk pada nodepertama8 sedangkan tail akan selalu

    menunuk pada node terakhir$

    SLLC dengan HEAD dan !A4L

  • 8/17/2019 Presentasi Struktur Data

    121/173

    SLLC dengan HEAD dan !A4L

    Enisialisasi =LLI

    TNode *head, *tail;

    ungsi Enisialisasi =LLI

    void init(){

    head = NULL;

    tail = NULL;

    }

    unction untuk mengetahui kosong tidaknya =LLI

    int isEmpty(){if(tail == NULL) return 1;

    else return 0;

    }

    SLLC dengan HEAD dan !A4L

  • 8/17/2019 Presentasi Struktur Data

    122/173

    S C de ga da

    Pengkaitan node baru ke linked list di depanPenambahan data baru di depan akan selalu menadi head$

    void insertDepan(int databaru){

      TNode *baru;

    baru = new TNode;

    baru->data = databaru;

    baru->next = baru;if(isEmpty()==1){

     head=baru;

     tail=baru;

     head->next=head;

     tail->next=tail;

    }

    else {

    baru->next = head;head = baru;

    tail->next = head;

    }

    printf("Data masuk\n“);

    }

    =LLI dengan JGA dan 'AEL

  • 8/17/2019 Presentasi Struktur Data

    123/173

    g

    =LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    124/173

    =LLI dengan JGA 9 'AEL

    void tambahBelakang(int databaru){

    TNode *baru;

    baru = new TNode;

    baru->data = databaru;

    baru->next = baru;

    if(isEmpty()==1){

     head=baru; tail=baru;

     head->next=head;

     tail->next=tail;

    }

    else {

    tail->next = baru;

    tail = baru;tail->next = head;

    }

    cout

  • 8/17/2019 Presentasi Struktur Data

    125/173

    =LLI dengan JGA 9 'AEL

    =LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    126/173

    = I de ga 9

    unction untuk menampilkan isi linked list6void tampil(){

    TNode *b;

    b = head;

    if(isEmpty()==0){

    do{

    printf(“%d”,b->data);

    b=b->next;

    }while(b!=tail->next);

    printf(“\n”);

    } else printf("Masih kosong\n“);

    }

    =LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    127/173

    g

    unction untuk menghapus data di depan

    void hapusDepan(){

    TNode *hapus;

    if (isEmpty()==0){

    int d;

    hapus = head;

    d = head->data;if(head != tail){

    hapus = head;

    head = head->next;

    tail->next = head;

    delete hapus;

    }else{

    head=NULL;tail=NULL;

    }

    printf(“%d terhapus\n“,d);

    } else printf("Masih kosong\n“);

    }

    =LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    128/173

    g

    =LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    129/173

    g

    • unction di atas akan menghapus data terdepan(perta+a) yang ditunuk oleh head pada linkedlist

    • Penghapusan node tidak boleh dilakukan ikakeadaan node sedang ditunuk oleh pointer8 makaharus dilakukan penunukkan terlebih dahuludengan variabel hapus pada head8 kemudiandilakukan pergeseran head ke node berikutnyasehingga data setelah head menadi head baru8kemudian menghapus variabel hapus denganmenggunakan perintah delete$

    •  Qika tail masih N%LL maka berarti data masihkosongD

    =LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    130/173

    gunction untuk menghapus data di belakang6

    void hapusBelakang(){

    TNode *hapus,*bantu;

    if (isEmpty()==0){

    int d;

    if(head == tail){

    d = tail->data;

    head = NULL;

    tail = NULL;}else{

    bantu = head;

    while(bantu->next != tail){

    bantu = bantu->next;

    }

    hapus = tail;

    tail = bantu;

    d = hapus->data;tail->next = head;

    delete hapus;

    }

    printf(“%d terhapus\n“,d);

    } else printf("Masih kosong\n“);

    }

    =LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    131/173

    g

    =LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    132/173

    g

    • unction di atas akan menghapus dataterbelakang (terak.ir) yang ditunuk oleh tailpada linked list

    • Penghapusan node tidak boleh dilakukan ikakeadaan node sedang ditunuk oleh pointer8 maka

    harus dilakukan penunukkan terlebih dahuludengan variabel hapus pada tail8 kemudiandibutuhkan pointer bantu untuk membantupergeseran dari head ke node berikutnya sampaisebelum tail8 sehingga tail dapat ditunukkan kebantu tersebut8 dan bantu tersebut akan menaditail yang baru$ =etelah itu hapus variabel hapusdengan menggunakan perintah delete$

    •  Qika tail masih N%LL maka berarti data masihkosongD

    =LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    133/173

    g

    unction untuk menghapus semua elemen LinkedList

    void clear(){

    TNode *bantu,*hapus;

    if(isEmpty() == 0){

    bantu = head;

    while(bantu->next!=head){hapus = bantu;

    bantu = bantu->next;

    delete hapus;

    }

    head = NULL;

    tail = NULL;}

    }

    =LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    134/173

    g

    • Menggunakan pointer bantu yangdigunakan untuk bergerak sepanang list8dan menggunakan pointer hapus yangdigunakan untuk menunuk node:nodeyang akan dihapus$

    • Pada saat pointer hapus menunuk padanode yang akan dihapus8 pointer bantuakan bergerak ke node selanutnya8 dankemudian pointer hapus akan didelete$

    ?include >iostream;

    ?include >stdlib$h;

    ?include >string;

    ?include >conio$h;

    ?include >fstream;

    ?include >time h;

    void tambahataBelakang(int dataBaru)

      ata *baru-

      baru3(ata*) malloc(si4eof(ata))-

      baru:;nilai3dataBaru-

      baru:;ne.t3baru-

      if (isGmpty())

      head3baru-

  • 8/17/2019 Presentasi Struktur Data

    135/173

    ?include >time$h;

    ?include >cstdlib;

    ?include >iomanip; @@set()

    using namespace std-struct ata

      int nilai-

      ata *ne.t-

      /-

      ata *head-

    void aal()

      head3N%LL-

      /

      bool isGmpty()

      if (head33N%LL)

      return true-

      return false-

      /

      void tambahataepan(int dataBaru)

      ata *baru-

      baru3(ata*) malloc(si4eof(ata))-

      baru:;nilai3dataBaru-

      baru:;ne.t3baru-

      if (isGmpty())

      head3baru-

      head:;ne.t3head-

      / else

      ata *bantu-  bantu3head-

      hile (bantu:;ne.tD3head)

      bantu3bantu:;ne.t-

      /

      baru:;ne.t3head-

      head3baru-

      bantu:;ne.t3head-

      /

      /

      head:;ne.t3head-

      / else

      ata *bantu-

      bantu3head-

      hile (bantu:;ne.tD3head)

     bantu3bantu:;ne.t-/

     bantu:;ne.t3baru-  baru:;ne.t3head-

      @@head3baru-

      @@bantu:;ne.t3baru- //

      void hapusepan()

      if(DisGmpty())

      if(head:;ne.tD3head)

      ata *hapus-

      hapus3head-

      ata *bantu-

      bantu3head-

      hile (bantu:;ne.tD3head)

     bantu3bantu:;ne.t-/

     bantu:;ne.t3head:;ne.t-

      head3head:;ne.t-  delete hapus- /

      else

      aal()- ///

      void hapusBelakang()@*

      tambah kode program di sini$$$$

    *@

    /

      void cetak()

      if (DisGmpty())

      ata *bantu-

      bantu3head-

      do

      cout>>bantu:;nilai>>5 5-

     bantu3bantu:;ne.t-  / hile(bantuD3head)- //

      int main()

      aal()-

      tambahataBelakang(!)-

      tambahataepan(S)-

      tambahataBelakang(0S)-

      hapusepan()-

      hapusepan()-

      cetak()-

      return "-

      /

  • 8/17/2019 Presentasi Struktur Data

    136/173

  • 8/17/2019 Presentasi Struktur Data

    137/173

    Double Linked List

    Circular

    Double Linked List Circular

  • 8/17/2019 Presentasi Struktur Data

    138/173

    • ouble Linked List Iircular adalah linked list denganmenggunakan pointer8 dimana setiap node memiliki 1Reld8 yaitu 0 Reld pointer yang menunuk pointerberikutnya (ne.t)8 0 Reld menunuk pointersebelumnya (prev)8 serta sebuah Reld yang berisidata untuk node tersebut$

    • ouble Linked List Iircular pointer ne.t dan prev nyamenunuk ke dirinya sendiri secara circular$

    • Pengertian: – ouble6 artinya Reld pointer:nya terdiri dari dua

    buah dan dua arah8 yaitu prev dan ne.t – Linked List6 artinya node:node tersebut saling

    terhubung satu sama lain$ – Iircular6 artinya pointer ne.t dan prev:nya

    menunuk ke dirinya sendiri 

    Elustrasi LLI

  • 8/17/2019 Presentasi Struktur Data

    139/173

    • =etiap node pada linked list mempunyai Reldyang berisi data dan pointer ke nodeberikutnya 9 ke node sebelumnya

    • %ntuk pembentukan node baru8 mulanyapointer ne.t dan prev akan menunuk kedirinya sendiri$

    •  Qika sudah lebih dari satu node8 maka pointer

    prev akan menunuk ke node sebelumnya8dan pointer ne.t akan menunuk ke nodesesudahnya$

    Deklarasi dan node baru DLLC

  • 8/17/2019 Presentasi Struktur Data

    140/173

    eklarasi node• ibuat dari struct berikut ini6• typedef struct TNode{

    • int data;

    • TNode *next;

    • TNode *prev;

    }; 

    • Pembentukan node baru

    • igunakan keyord ne yang berarti mempersiapkansebuah node baru berserta alokasi memorinya$

    • TNode *baru;

    • baru = new TNode;

    • baru->data = databaru;• baru->next = baru;

    • baru->prev = baru;

    LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    141/173

    • ibutuhkan satu buah variabelpointer6 head

    • Jead akan selalu menunuk pada

    node pertama

    DLL"C dengan HEAD

  • 8/17/2019 Presentasi Struktur Data

    142/173

    eklarasi Pointer Penunuk &epala LLI• Manipulasi linked list tidak bisa

    dilakukan langsung ke node yangdituu8 melainkan harus melalui node

    pertama dalam linked list$eklarasinya sebagai berikut6• TNode *head;• ungsi Enisialisasi =ingle LinkedList

    Iircular• void init(){

     – head = NULL;

    • }

    LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    143/173

    unction untuk mengetahui kosong tidaknya LLI• int isEmpty(){• if(head == NULL) return 1;• else return 0;• }

    Penambahan data di depan

    • Penambahan node baru akan dikaitan di node palingdepan, namun pada saat pertama kali (data masihkosong)8 maka penambahan data dilakukan pada headnya$

    • Pada prinsipnya adalah mengkaitkan data baru denganhead8 kemudian head akan menunuk pada data baru

    tersebut sehingga head akan tetap selalu menadi dataterdepan$ %ntuk menghubungkan node terakhirdengan node terdepan dibutuhkan pointer bantu$

    LLI menggunakan Jead

  • 8/17/2019 Presentasi Struktur Data

    144/173

    void  insertDepan(int databaru){  TNode *baru *bantu;

    baru = new TNode;

    baru->data = databaru;

    baru->next = baru;

    baru->prev = baru;

      if(is!"pty()==#){

    $ead=baru;$ead->next = $ead;

    $ead->prev = $ead;

      }

      e%se {

    bantu = $ead->prev;

    baru->next = $ead;

    $ead->prev = baru;

    $ead = baru;

    $ead->prev = bantu;

    bantu->next = $ead;

      }

      cout&&'Data "asun';

    }

  • 8/17/2019 Presentasi Struktur Data

    145/173

    LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    146/173

    Penambahan data di belakang• Penambahan data dilakukan di belakang8

    namun pada saat pertama kali data langsungditunuk pada head:nya$

    • Penambahan di belakang lebih sulit karenakita membutuhkan pointer bantu untukmengetahui data terbelakang8 kemudiandikaitkan dengan data baru$ %ntukmengetahui data terbelakang perludigunakan perulangan$

    LLI dengan Jead

  • 8/17/2019 Presentasi Struktur Data

    147/173

    void inserte%aan+ (int databaru){

      TNode *baru*bantu;

    baru = new TNode;

    baru->data = databaru;

    baru->next = baru;

    baru->prev = baru;

    if(is!"pty()==#){

     $ead=baru; $ead->next = $ead;

     $ead->prev = $ead;

    }

    e%se {

     bantu=$ead->prev;

     bantu->next = baru;

     baru->prev = bantu;

     baru->next = $ead; $ead->prev = baru;

    }

    cout&&'Data "asun';

    LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    148/173

    LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    149/173

    Function untuk menampilkan isi linked listvoid ta"pi%(){TNode *bantu;

    bantu = $ead;

    if(is!"pty()==,){

    do{

    cout&&bantu->data&&' ';

    bantu=bantu->next;

    }w$i%e(bantu=$ead);

    cout&&end%;

    } e%se cout&&'.asi$ oson+n';

    LLI dgn JGA

  • 8/17/2019 Presentasi Struktur Data

    150/173

    void  $apusDepan (){

    TNode *$apus*bantu;

    int d;

    if (is!"pty()==,){

     if($ead->next = $ead){

    $apus = $ead;

    d = $apus->data;bantu = $ead->prev;

    $ead = $ead->next;

    bantu->next = $ead;

    $ead->prev = bantu;

    de%ete $apus;

     } e%se {

    d = $ead->data;$ead = N/00;

     }

     cout&&d&&' ter$apusn';

    } e%se cout&&'.asi$ oson+n';

    DLLC dengan HEAD

  • 8/17/2019 Presentasi Struktur Data

    151/173

    g

    uncti!n untuk men"apus n!de terelakan"void  $apuse%aan+(){

    TNode *$apus*bantu;

    int d;

    if (is!"pty()==,){

     if($ead->next = $ead){

    bantu = $ead;

    w$i%e(bantu->next->next = $ead){bantu = bantu->next;

    }

    $apus = bantu->next;

    d = $apus->data;

    bantu->next = $ead;

    de%ete $apus;

     } e%se {

    d = $ead->data;

    $ead = N/00;

     }

     cout&&d&&' ter$apusn';

    } e%se cout&&'.asi$ oson+n';

    DLLC dengan HEAD

  • 8/17/2019 Presentasi Struktur Data

    152/173

    • iperlukan pointer bantu yangmengikuti pointer hapus yangberguna untuk menunuk ke node

    sebelum terakhir$• &emudian pointer hapus

    ditunukkan ke node setelah

    pointer bantu8 kemudian hapuspointer hapus dengan perintahdelete$

    LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    153/173

    LLI dengan JGA

  • 8/17/2019 Presentasi Struktur Data

    154/173

    uncti!n untuk men"apus semua elemenvoid  c%ear(){

    TNode *bantu*$apus;

    if (is!"pty()==,){

    bantu = $ead;

    w$i%e(bantu->next=$ead){$apus = bantu;

    bantu = bantu->next;

    de%ete $apus;

    }

    $ead = N/00;

    }}

    DLLC dengan HEAD dan !A4L

  • 8/17/2019 Presentasi Struktur Data

    155/173

    • ibutuhkan dua buah variabelpointer6 head dan tail

    • Jead akan selalu menunuk pada

    node pertama8 sedangkan tailakan selalu menunuk pada nodeterakhir$

    DLLC dengan HEAD dan !A4L

  • 8/17/2019 Presentasi Struktur Data

    156/173

    Enisialisasi LLNI• TNode *head, *tail;

    ungsi Enisialisasi LLNI

    • void init(){

     – head = NULL;

     – tail = NULL;

    • }

    unction untuk mengetahui kosong tidaknya LLNI

    • int isEmpty(){

    • if(tail == NULL) return 1;• else return 0;

    • }

    DLLC dengan HEAD dan !A4L

  • 8/17/2019 Presentasi Struktur Data

    157/173

    void  insertDepan (int databaru){

      TNode *baru;baru = new TNode;

    baru->data = databaru;

    baru->next = baru;

    baru->prev = baru;

      if(is!"pty()==#){

    $ead=baru;

    tai%=baru;

    $ead->next = $ead;$ead->prev = $ead;

    tai%->next = tai%;

    tai%->prev = tai%;

      }

      e%se {

    baru->next = $ead;

    $ead->prev = baru;

    $ead = baru;

    $ead->prev = tai%;

    tai%->next = $ead;

      }

      cout&&'Data "asun';

    }

    LLI dengan JGA dan 'AEL

  • 8/17/2019 Presentasi Struktur Data

    158/173

    LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    159/173

    Penambahan node di belakangPenambahan node di belakang akan selalu dikaitkan dengan tail dan

    kemudiannode baru tersebut akan menadi tailvoid  inserte%aan+(int databaru){

    TNode *baru;

    baru = new TNode;

    baru->data = databaru;

    baru->next = baru;

    baru->prev = baru;

    if(is!"pty()==#){ $ead=baru;

     tai%=baru;

     $ead->next = $ead;

     $ead->prev = $ead;

     tai%->next = tai%;

     tai%->prev = tai%;

    }

    e%se {

     tai%->next = baru;

     baru->prev = tai%;

     tai% = baru;

     tai%->next = $ead;

     $ead->prev = tai%;

    }

    cout&&'Data "asun';

    }

    LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    160/173

    LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    161/173

    LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    162/173

    • unction untuk menampilkan isi linked listvoid tampil(){TNode *bantu;

    bantu = head;

    if(isEmpty()==0){

    do{

    cout

  • 8/17/2019 Presentasi Struktur Data

    163/173

    uncti!n untuk men"apus data di data terdepan

    void $apusDepan(){TNode *$apus;

    int d;

    if (is!"pty()==,){

     if($ead = tai%){

    $apus = $ead;

    d = $apus->data;

    $ead = $ead->next;

    tai%->next = $ead;

    $ead->prev = tai%;de%ete $apus;

     } e%se {

    d = $ead->data;

    $ead = N/00;

    tai% = N/00;

     }

     cout&&d&&' ter$apusn';

    } e%se cout&&'.asi$ oson+n';

    LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    164/173

    LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    165/173

    uncti!n untuk men"apus n!de terelakan"void  $apuse%aan+(){TNode *$apus;

    int d;

    if (is!"pty()==,){

     if($ead = tai%){

    $apus = tai%;

      d = $apus->data;

    tai% = tai%->prev;

    tai%->next = $ead;

    $ead->prev = tai%;

    de%ete $apus;

     } e%se {

    d = $ead->data;

    $ead = N/00;

    tai% = N/00;

     }

     cout&&d&&' ter$apusn';

    } e%se cout&&'.asi$ oson+n';

    LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    166/173

    • Pointer hapus tidak perlu di loopuntuk mencari node terakhir$Pointer hapus hanya perlumenunuk pada pointer tail saa$

    • &arena pointer hapus sudah bisamenunuk ke pointer sebelumnyadengan menggunakan elemen

    prev ke node sebelumnya$&emudian pointer tail akanberpindah ke node sebelumnya$

    LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    167/173

    LLI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    168/173

    •Function untuk menghapus semua elemen LinkedListvoid c%ear(){TNode *bantu*$apus;

    if (is!"pty()==,){

    bantu = $ead;

    w$i%e(bantu->next=$ead){

    $apus = bantu;bantu = bantu->next;

    de%ete $apus;

    }

    $ead = N/00;

    }} 

    LLNI dengan JGA 9 'AEL

  • 8/17/2019 Presentasi Struktur Data

    169/173

    • Menggunakan pointer bantu yangdigunakan untuk bergerak sepananglist8 dan menggunakan pointer hapusyang digunakan untuk menunuk node:node yang akan dihapus$

    • Pada saat pointer hapus menunukpada node yang akan dihapus8 pointerbantu akan bergerak ke nodeselanutnya8 dan kemudian pointer

    hapus akan didelete$

  • 8/17/2019 Presentasi Struktur Data

    170/173

  • 8/17/2019 Presentasi Struktur Data

    171/173

  • 8/17/2019 Presentasi Struktur Data

    172/173

  • 8/17/2019 Presentasi Struktur Data

    173/173

    • Antonius 5ac.+at C, S67o+• Adie Bondan