• Tidak ada hasil yang ditemukan

Struktur Data – Pertemuan 13 List Rekursif.

N/A
N/A
Protected

Academic year: 2017

Membagikan "Struktur Data – Pertemuan 13 List Rekursif."

Copied!
74
0
0

Teks penuh

(1)

Struktur Data

Pertemuan 13

List Rekursif

P r a j a n t o W a h y u A d i

(2)

Rencana Kegiatan Perkuliahan Semester

#

Pokok Bahasan

1 Pengenalan Struktur

Data

2 ADT Stack & Queue

3 List Linear

4 List Linear

5 List Linear

6 Representasi Fisik List

Linear

7 Variasi List Linear

8

Ujian Tengah Semester

#

Pokok Bahasan

9 Variasi List Linear

10 Variasi List Linear

11 Stack dengan Representasi

List

12 Queue dengan Representasi

List

13 List Rekursif

14 Pohon dan Pohon Biner

15 Studi Kasus Multi List

(3)

Konten

Pendekatan Iteratif dan Rekursif

1

Membalik List secara Iteratif

2

Fungsi Rekursif pada Memory

3

Membalik List secara Rekursif

(4)

Pendekatan Iteratif dan Rekursif

Pendekatan iteratif menggunakan proses perulangan

(loop) untuk menyelesaikan masalah

Dala ko teks prosedural kita e iliki loop

sebagai mekanisme untuk mengulang

Suatu entitas disebut rekursif jika pada definisinya

terkandung dirinya sendiri

Program prosedural juga dapat bersifat rekursif

Fungsi rekursif adalah fungsi yang memanggil dirinya

(5)

Studi Kasus: Membalik List secara Iteratif

Input:

Output:

10 200 8 300 14 400 7 Null

100 200 300 400

100

Head

10 Null 8 100 14 200 7 300

100 200 300 400

400

(6)

Studi Kasus: Membalik List secara Iteratif

Diperlukan tiga buah variabel pointer:

curr

ent

membentuk link baru sekaligus memutus link sebelumnya

next

memindahkan pointer current ke node selanjutnya setelah

link sebelumnya diputus

prev

ious

menyimpan alamat node sebelumnya setelah link diputus

10 Null 8 300 14 400 7 Null

100 200 300 400

100

head

100

prev

200

curr

200

(7)

Studi Kasus: Membalik List secara Iteratif

Diperlukan tiga buah variabel pointer:

curr

ent

membentuk link baru sekaligus memutus link sebelumnya

next

memindahkan pointer current ke node selanjutnya setelah

link sebelumnya diputus

prev

ious

menyimpan alamat node sebelumnya setelah link diputus

10 Null 8 300 14 400 7 Null

100 200 300 400

100

head

100

prev

200

curr

200

(8)

Studi Kasus: Membalik List secara Iteratif

Diperlukan tiga buah variabel pointer:

curr

ent

membentuk link baru sekaligus memutus link sebelumnya

next

memindahkan pointer current ke node selanjutnya setelah

link sebelumnya diputus

prev

ious

menyimpan alamat node sebelumnya setelah link diputus

10 Null 8 100 14 400 7 Null

100 200 300 400

100

head

100

prev

200

curr

200

(9)

Studi Kasus: Membalik List secara Iteratif

//Fungsi membalik list secara Iteratif

void balikListIteratif(){

Node *curr, *prev, *next; curr = head;

prev = NULL;

while(curr != NULL){ next = curr->next; curr->next = prev; prev = curr;

curr = next; }

(10)

Fungsi Rekursif pada Memory

Memori yang dialokasikan pada sebuah program/

aplikasi umumnya dibagi menjadi 4 bagian:

Heap /

Free Store

Bersifat Dinamis:

Ukuran memori dapat berubah ketika program dijalankan

Stack

Bersifat Statis:

ukuran memori ditentukan ketika

kompilasi

ukuran memori tidak dapat berubah

Static/Global

(11)

Fungsi Rekursif pada Memory

Memori yang dialokasikan pada sebuah program/

aplikasi umumnya dibagi menjadi 4 bagian:

Heap /

Free Store

Memori yang dapat di-request selama program berjalan

Stack

Menyimpan semua informasi tentang

pemanggilan

fungsi

untuk menyimpan

semua variabel lokal

Static/Global

Menyimpan variabel global selama program

berjalan

Code(Text)

Menyimpan semua perintah yang akan
(12)

Fungsi Rekursif pada Memory

Stack memory

dialokasikan ketika terjadi

pemanggilan fungsi tertentu

(13)

Fungsi Rekursif pada Memory

Stack memory

dialokasikan ketika terjadi

pemanggilan fungsi tertentu

Nilai dan kondisi terakhir pada

pemanggilan fungsi tetap tersimpan pada

stack memory

Fu gsi baru aka ditu puk berjala

diatas fungsi sebelumnya (sekaligus

menghentikan sementara eksekusi fungsi

sebelumnya) pada

stack memory

(14)

Fungsi Rekursif pada Memory

Stack memory

dialokasikan ketika terjadi

pemanggilan fungsi tertentu

Nilai dan kondisi terakhir pada

pemanggilan fungsi tetap tersimpan pada

stack memory

Fu gsi baru aka ditu puk berjala

diatas fungsi sebelumnya (sekaligus

menghentikan sementara eksekusi fungsi

sebelumnya) pada

stack memory

(15)

Fungsi Rekursif pada Memory

Stack memory

dialokasikan ketika terjadi

pemanggilan fungsi tertentu

Nilai dan kondisi terakhir pada

pemanggilan fungsi tetap tersimpan pada

stack memory

Fu gsi baru aka ditu puk berjala

diatas fungsi sebelumnya (sekaligus

menghentikan sementara eksekusi fungsi

sebelumnya) pada

stack memory

(16)

Fungsi Rekursif pada Memory

Stack memory

dialokasikan ketika terjadi

pemanggilan fungsi tertentu

Nilai dan kondisi terakhir pada

pemanggilan fungsi tetap tersimpan pada

stack memory

Fu gsi baru aka ditu puk berjala

diatas fungsi sebelumnya (sekaligus

menghentikan sementara eksekusi fungsi

sebelumnya) pada

stack memory

(17)

Fungsi Rekursif pada Memory

Stack memory

dialokasikan ketika terjadi

pemanggilan fungsi tertentu

Nilai dan kondisi terakhir pada

pemanggilan fungsi tetap tersimpan pada

stack memory

Fu gsi baru aka ditu puk berjala

diatas fungsi sebelumnya (sekaligus

menghentikan sementara eksekusi fungsi

sebelumnya) pada

stack memory

Jika fungsi pada tumpukkan paling atas

selesai dijalankan, maka fungsi yang

berada pd tumpukkan dibawahnya akan

dijalankan kembali (resume).

(18)

Fungsi Rekursif pada Memory

Stack memory

dialokasikan ketika terjadi

pemanggilan fungsi tertentu

Nilai dan kondisi terakhir pada

pemanggilan fungsi tetap tersimpan pada

stack memory

Fu gsi baru aka ditu puk berjala

diatas fungsi sebelumnya (sekaligus

menghentikan sementara eksekusi fungsi

sebelumnya) pada

stack memory

Jika fungsi pada tumpukkan paling atas

selesai dijalankan, maka fungsi yang

berada pd tumpukkan dibawahnya akan

dijalankan kembali (resume).

(19)

Fungsi Rekursif pada Memory

Stack memory

dialokasikan ketika terjadi

pemanggilan fungsi tertentu

Nilai dan kondisi terakhir pada

pemanggilan fungsi tetap tersimpan pada

stack memory

Fu gsi baru aka ditu puk berjala

diatas fungsi sebelumnya (sekaligus

menghentikan sementara eksekusi fungsi

sebelumnya) pada

stack memory

Jika fungsi pada tumpukkan paling atas

selesai dijalankan, maka fungsi yang

berada pd tumpukkan dibawahnya akan

dijalankan kembali (resume).

(20)

Fungsi Rekursif pada Memory

Stack memory

dialokasikan ketika terjadi

pemanggilan fungsi tertentu

Nilai dan kondisi terakhir pada

pemanggilan fungsi tetap tersimpan pada

stack memory

Fu gsi baru aka ditu puk berjala

diatas fungsi sebelumnya (sekaligus

menghentikan sementara eksekusi fungsi

sebelumnya) pada

stack memory

Jika fungsi pada tumpukkan paling atas

selesai dijalankan, maka fungsi yang

berada pd tumpukkan dibawahnya akan

dijalankan kembali (resume).

(21)

Studi Kasus: Membalik List secara Rekursif

Input:

Output:

10 200 8 300 14 400 7 Null

100 200 300 400

100

Head

10 Null 8 100 14 200 7 300

100 200 300 400

400

(22)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); //rekursif

p->next->next = p; p->next = NULL;

}

10 200 100 7 Null

400

8 300 200 14 400

300

(23)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

(24)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

(25)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

(26)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

(27)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

(28)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

(29)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

(30)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

(31)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

(32)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

(33)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

(34)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

(35)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

(36)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

(37)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300 balikRekursif()

(38)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300 balikRekursif()

(39)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=100 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300 balikRekursif()

(40)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300 balikRekursif()

(41)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300 balikRekursif()

p = 400

(42)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

(43)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

(44)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

head = 400

(45)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

head = 400

(46)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 Null 400

14 400 300

8 300 200 7 Null

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

head = 400

(47)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 400 300

8 300 200 7

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

head = 400

(48)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 400 300

8 300 200 7

400

14 400 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

head = 400

(49)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 Null 300

8 300 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

head = 400

(50)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 Null 300

8 300 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

(51)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 Null 300

8 300 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200

(52)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 Null 300

8 300 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200

(53)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 Null 300

8 300 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(54)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 Null 300

8 300 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(55)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 Null 300

8 300 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(56)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 200 300

8 300 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(57)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 300

200

10 200 100 main()

7 300 400

14 200 300

8 300 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(58)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 Null

200

10 200 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(59)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 Null

200

10 200 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(60)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 Null

200

10 200 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100

(61)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 Null

200

10 200 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100

(62)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 Null

200

10 200 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100

head = 400

(63)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 Null

200

10 200 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100

head = 400

(64)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 Null

200

10 200 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100

head = 400

(65)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 100

200

10 200 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100

head = 400

(66)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 100

200

10 200 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100

head = 400

(67)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 100

200

10 Null 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100

head = 400

(68)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 100

200

10 Null 100 main()

7 300 400

14 200 300

8 200 7

400

14 300

balikRekursif() p = 100

head = 400

(69)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 100

200

10 Null 100 main()

7 300 400

14 200 300

8 200 7

400

(70)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 100

200

10 Null 100 main()

7 300 400

14 200 300

8 200 7

400

14 300 head = 400

(71)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 100

200

10 Null 100 main()

7 300 400

14 200 300

8 200 7

400

14 300 head = 400

(72)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

Stack Memory Heap Memory 8 100

200

10 Null 100 main()

7 300 400

14 200 300

8 200 7

400

(73)

Studi Kasus: Membalik List secara Rekursif

//Fungsi membalik list secara Rekursif

void balikRekursif (Node *p){

if(p->next == NULL){ head = p;

return; }

balikRekursif(p->next); p->next->next = p;

p->next = NULL; }

void main(){

balikRekursif(head);//head=400 }

10 Null 100 7 300

400

8 100 200 14 200

(74)

Sekian

Referensi

Dokumen terkait

Operand service quality berpengaruh tidak besar terhadap customer loyalty di Program Studi Manajemen Strata 1 pada Perguruan Tinggi Swasta di Surabaya yang

Hasil penelitian adalah: (1) Terdapat hubungan yang positif dan signifikan antara power otot lengan terhadap keterampilan smash bola voli r = 0,48 pada X1 power

Penelitian ini bertujuan untuk mengetahui perbedaan signifikan pada rasio ROA, ROE, NPM dan BOPO terhadap kinerja keuangan PT. Bank Rakyat Indonesia Syariah tahun 2012-2013

Alasan peneliti memilih judul dan pembahasan ini dikarenakan dalam KUHP RI banyak terdapat kata-kata serapan khususnya dari Bahasa Arab serta pendayagunaan kata dan ketepatan

Alam senantiasa berubah. Setiap makhluk hidup di alam juga akan berubah. Perubahan pada satu bagian dari sebuah jaring-jaring makanan akan mengubah bagian yang lain. Pada

Jumlah sel bakteri pada suatu sampel diketahui dengan menghitung jumlah koloni yang tumbuh pada media tersebut dikalikan dengan faktor pengencernya dengan

Memuat artikel yang berisi karya tidak orisinal dan/atau tidak mempunyai kebaruan/memberikan kontribusi ilmiah.. 0

Kedua angka tersebut dapat dijadikan alternatif ketika melakukan generalisasi unsur transportasi peta RBI dari 1:25.000 menjadi 1:50.000, namun karena kerapatan