linked list animasi

29
Linked List Entin Martiana

Upload: mahaputrah

Post on 24-Aug-2014

147 views

Category:

Documents


12 download

TRANSCRIPT

Page 1: Linked List Animasi

Linked List

Entin Martiana

Page 2: Linked List Animasi

Malloc

• Memory Allocation (malloc) adalah sebuah fungsi fasilitas untuk memesan tempat secara berurutan untuk tipe data dinamis(pointer)

• Nilai balik dari memory allocation adalah void *

Page 3: Linked List Animasi

Problem

• Bagaimana jika kita pesan 50000 alamat berurutan?– Akan selalu gagal.– Untuk itu kita lakukan memory allocation untuk

setiap satu data.• Bagaimana agar data pertama tetap

berhubungan dengan data kedua?– Kita gunakan pointer untuk menghubungkan

Page 4: Linked List Animasi

The Linked List data structure

[0] [1] [2]array

A B CArray

linked

A B CLinked list

Linked lists are unbounded(maximum number of items limited only by memory)

node

Page 5: Linked List Animasi

Array vs Linked List

Linked lists are unbounded(maximum number of items limited only by memory)

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

A[2]

A[1]

A[0]

A(data 3)

A(data 2)

A(data 1)

Page 6: Linked List Animasi

Deklarasi

struct simpul{

char nama[25];int nrp;struct simpul *next;

};struct simpul *ujung;

nama

nrp

next

simpul

data

pointer yg menunjuk simpul lain

Page 7: Linked List Animasi

Membangun Linked List

Apa yang harus dilakukan?1. Deklarasi2. Memory allocation3. Mengisi data4. Menyiapkan untuk dihubungkan dengan

data baru berikutnya

Page 8: Linked List Animasi

Bagaimana?1. struct simpul *ujung;2. ujung=(struct simpul*)malloc(sizeof(struct simpul));3. printf("Nama :");scanf("%s",&ujung->nama);4. printf("NRP :");scanf("%d",&ujung->nrp);5. if(j==0)

{ujung->next=NULL;tampung=ujung;

} nama1

nrp1next

ujungtampung

NULL

Page 9: Linked List Animasi

Selanjutnya1. ujung=(struct simpul*)malloc(sizeof(struct simpul));2. printf("Nama :");scanf("%s",&ujung->nama);3. printf("NRP :");scanf("%d",&ujung->nrp);4. if(j<>0)

{ujung->next=tampung;tampung=ujung;

}

nama2

nrp2next

ujung

nama1

nrp1next NULL

tampung

nama2

nrp2next

ujung tampung

Page 10: Linked List Animasi

Selanjutnya1. ujung=(struct dtnilai*)malloc(sizeof(struct dtnilai));2. printf("Nama :");scanf("%s",&ujung->nama);3. printf("NRP :");scanf("%d",&ujung->nrp);4. if(j<>0)

{ujung->next=tampung;tampung=ujung;

}

nama3

nrp3next

ujung

nama1

nrp1next NULL

tampung

nama2

nrp2next

nama3

nrp3next

ujung tampung

Page 11: Linked List Animasi

Sampai iterasi keempat

nama1

nrp1next NULL

tampung

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

Page 12: Linked List Animasi

Membaca (Menampilkan)

nama1

nrp1next NULL

tampil

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

tampil = ujung;

while (tampil<>NULL)

// fungsi menampilkan

tampil = tampil -> next;

tampil tampil tampil tampil

Page 13: Linked List Animasi

Mencari simpul ttt.

nama1

nrp1next NULL

cari

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

cari = ujung;

while (cari->nama!=nama2)

{

cari = cari->next;

}

cari cari

Page 14: Linked List Animasi

Menyisipkan sebagai simpul terakhir

nama1

nrp1next

cari

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

cari = ujung

while (cari->next !=NULL)

cari = cari->next;

cari->next=baru;

namax

nrpxnext

baru

NULL

cari cari cari

NULL

Page 15: Linked List Animasi

Menghapus simpul ttt.

nama1

nrp1next NULL

hapus

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

hapus = ujung;

Page 16: Linked List Animasi

Menghapus simpul ttt.

nama1

nrp1next NULL

hapus

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

while (hapus->nama != nama2)

{

sbl = hapus;

hapus=hapus->next;

}

Page 17: Linked List Animasi

Menghapus simpul ttt.

nama1

nrp1next NULL

hapus

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

while (hapus->nama != nama2)

{

sbl=hapus;

hapus=hapus->next;

}

sbl

Page 18: Linked List Animasi

Menghapus simpul ttt.

nama1

nrp1next NULL

hapus

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

while (hapus->nama != nama2)

{

sbl=hapus;

hapus=hapus->next;

}

sbl

Page 19: Linked List Animasi

Menghapus simpul ttt.

nama1

nrp1next NULL

hapus

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

sbl->next=hapus->next;

sbl

Page 20: Linked List Animasi

Menghapus simpul ttt.

nama1

nrp1next NULL

nama3

nrp3next

nama4

nrp4next

ujung

free(hapus);

sbl

Page 21: Linked List Animasi

Menyisipkan setelah simpul ttt.

nama1

nrp1next NULL

cari

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

cari = ujung namax

nrpxnext

baru

Page 22: Linked List Animasi

Menyisipkan setelah simpul ttt.

nama1

nrp1next NULL

cari

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

while (cari->nama!=nama3)

cari = cari->next;

baru->next = cari->next;

namax

nrpxnext

baru

Page 23: Linked List Animasi

Menyisipkan setelah simpul ttt.

nama1

nrp1next NULL

cari

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

cari->next = baru;namax

nrpxnext

baru

Page 24: Linked List Animasi

Menyisipkan sebelum simpul ttt.

nama1

nrp1next NULL

cari

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

cari = ujung namax

nrpxnext

baru

Page 25: Linked List Animasi

Menyisipkan sebelum simpul ttt.

nama1

nrp1next NULL

stl

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

cari = ujung;

while (cari->nama!=nama1)

stl=cari;

cari=cari->next;

namax

nrpxnext

baru

cari

Page 26: Linked List Animasi

Menyisipkan sebelum simpul ttt.

nama1

nrp1next NULL

stl

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

cari = ujung;

while (cari->nama!=nama1)

stl=cari;

cari=cari->next;

namax

nrpxnext

baru

cari

Page 27: Linked List Animasi

Menyisipkan sebelum simpul ttt.

nama1

nrp1next NULL

stl

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

cari = ujung;

while (cari->nama!=nama1)

stl=cari;

cari=cari->next;

namax

nrpxnext

baru

cari

Page 28: Linked List Animasi

Menyisipkan sebelum simpul ttt.

nama1

nrp1next NULL

stl

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

baru->next = cari; namax

nrpxnext

baru

cari

Page 29: Linked List Animasi

Menyisipkan sebelum simpul ttt.

nama1

nrp1next NULL

stl

nama2

nrp2next

nama3

nrp3next

nama4

nrp4next

ujung

stl->next = baru; namax

nrpxnext

baru

cari