• Tidak ada hasil yang ditemukan

LIST REKURSIF.

N/A
N/A
Protected

Academic year: 2017

Membagikan "LIST REKURSIF."

Copied!
68
0
0

Teks penuh

(1)

LIST REKURSIF

Danang Wahyu Utomo

(2)

RENCANA KEGIATAN PERKULIAHAN SEMESTER

W

Pokok Bahasan

1 ADT Stack

2 ADT Queue

3 List Linear

4 List Linear

5 List Linear

6 Representasi Fisik List Linear

7 Variasi List Linear

8 Ujian Tengah Semester

W

Pokok Bahasan

9

Variasi List Linear

10 Double Linked List

11 Stack dengan Representasi List

12 Queue dengan Representasi List

13

List Rekursif

14 Pohon dan Pohon Biner

15 Multi List

(3)

Konten

Pendekatan Iteratif dan Rekursif

Membalik List secara Iteratif

Fungsi Rekursif pada Memory

(4)

Pendekatan Iteratif dan Rekursif

Pendekatan iteratif menggunakan proses perulangan

(loop) untuk menyelesaikan masalah

Dalam konteks prosedural kita memiliki loop sebagai

mekanisme untuk mengulang

Suatu entitas disebut rekursif jika pada definisinya

terkandung dirinya sendiri

Program prosedural juga dapat bersifat rekursif

(5)

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)

Membalik List secara Iteratif

Diperlukan tiga variabel pointer :

-

Current

membentuk link baru sekaligus memutus link sebelumnya

-

Next

memindahkan pointer current ke node selanjutnya setelah link

sebelumnya diputus

-

Previous

menyimpan alamat node sebelumnya setelah link diputus

(7)

Membalik List secara Iteratif

Diperlukan tiga variabel pointer :

-

Current

membentuk link baru sekaligus memutus link sebelumnya

-

Next

memindahkan pointer current ke node selanjutnya setelah link

sebelumnya diputus

-

Previous

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)

Membalik List secara Iteratif

Diperlukan tiga variabel pointer :

-

Current

membentuk link baru sekaligus memutus link sebelumnya

-

Next

memindahkan pointer current ke node selanjutnya setelah link

sebelumnya diputus

-

Previous

menyimpan alamat node sebelumnya setelah link diputus

(9)

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

Memory 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

:

(11)

Fungsi Rekursif pada Memory

Memory 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

(12)

Fungsi Rekursif pada Memory

Stack memory dialokasikan ketika

terjadi pemanggilan fungsi tertentu

Nilai dan kondisi terakhir pada

pemanggilan fungsi tetap tersimpan

pada stack memory

Fungsi baru akan ditumpuk (berjalan)

diatas fungsi sebelumnya (sekaligus

menghentikan sementara eksekusi

(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

Fungsi baru akan ditumpuk (berjalan)

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

Fungsi baru akan ditumpuk (berjalan)

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

Fungsi baru akan ditumpuk (berjalan)

diatas fungsi sebelumnya (sekaligus

menghentikan sementara eksekusi

fungsi sebelumnya) pada stack memory

Jika fungsi pada tumpukan paling atas

selesai dijalankan, fungsi pada tumpukan

dibawahnya akan dijalankan kembali

(16)

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

(17)

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

(18)

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

8 300

200

7 Null

400

14 400

300

8 300

200

7 Null

400

14 400

(19)

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

(20)

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

8 300

200

7 Null

400

14 400

300

8 300

200

7 Null

400

14 400

300

balikRekursif()

(21)

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

(22)

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

8 300

200

7 Null

400

14 400

300

8 300

200

7 Null

400

14 400

300

balikRekursif()

(23)

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

(24)

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

8 300

200

7 Null

400

14 400

300

8 300

200

7 Null

400

14 400

300

balikRekursif() p = 100 balikRekursif()

(25)

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

(26)

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

8 300

200

7 Null

400

14 400

300

8 300

200

7 Null

400

14 400

300

balikRekursif() p = 100 balikRekursif()

(27)

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

(28)

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

8 300

200

7 Null

400

14 400

300

8 300

200

7 Null

400

14 400

300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

(29)

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

(30)

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

8 300

200

7 Null

400

14 400

300

8 300

200

7 Null

400

14 400

300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

(31)

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

(32)

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

8 300

200

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

(33)

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

(34)

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

8 300

200

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

(35)

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

(36)

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

8 300

200

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

(37)

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

(38)

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

8 300

200

7 Null

400

14 400

300

8 300

200

7 Null

400

14 400

300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

(39)

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

(40)

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;

}

8 300

200

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

(41)

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

(42)

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;

}

8 300

200

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

(43)

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

(44)

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

8 300

200

7 300

400

14 Null

300

8 300

200

7

400

14

300

balikRekursif() p = 100 balikRekursif()

p = 200 balikRekursif()

p = 300

head = 400

(45)

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

(46)

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

8 300

200

7 300

400

14 Null

300

8 300

200

7

400

14

300

balikRekursif() p = 100 balikRekursif()

p = 200

(47)

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

(48)

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

8 300

200

7 300

400

14 Null

300

8 300

200

7

400

14

300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(49)

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

(50)

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;

}

8 300

200

7 300

400

14 Null

300

8 300

200

7

400

14

300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(51)

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

(52)

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

8 300

200

7 300

400

14 200

300

8 300

200

7

400

14

300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(53)

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

(54)

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

8 Null

200

7 300

400

14 200

300

8

200

7

400

14

300

balikRekursif() p = 100 balikRekursif()

p = 200

head = 400

(55)

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

(56)

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

8 Null

200

7 300

400

14 200

300

8

200

7

400

14

300

balikRekursif()

p = 100

(57)

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

(58)

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;

}

8 Null

200

7 300

400

14 200

300

8

200

7

400

14

300

balikRekursif()

p = 100

head = 400

(59)

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

(60)

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;

}

8 100

200

7 300

400

14 200

300

8

200

7

400

14

300

balikRekursif()

p = 100

head = 400

(61)

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

(62)

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

8 100

200

7 300

400

14 200

300

8

200

7

400

14

300

balikRekursif()

p = 100

head = 400

(63)

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

(64)

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

8 100

200

7 300

400

14 200

300

8

200

7

400

14

300

(65)

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

(66)

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

8 100

200

7 300

400

14 200

300

8

200

7

400

14

300

(67)

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

(68)

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

7 300

400

8 100

200

14 200

300

Referensi

Garis besar

Dokumen terkait

Sementara itu, berdasarkan hasil interpretasi lineasi citra dengan metode FFD , diketahui daerah kecamatan Kendari, kecamatan Kendari Barat, kecamatan Abeli dan kecamatan

Oleh karena itu, penelitian ini dilakukan sebagai sarana informasi untuk mengetahui lebih dalam terkait persepsi petani di Kecamatana mojolaban terhadap pupuk

Segala puji bagi Allah yang telah melimpahkan rahmat dan hidayah sehinga penulis dapat menyelesaikan penelitian dan penyusunan skripsi yang berjudul: “UJI

Zhang (2007) mengajukan model pertumbuhan ekonomi dua sektor dalam waktu diskret, di mana dalam sistem produksi, produsen akan menghasilkan dua output (dua jenis produk)

Bentuk topografi antara tempat satu dengan yang lainnya tentu saja ada perbedaan. Hal tersebut tergantung dari daya tahan tanaman yang akan dibudidayakan terhadap

Penerapan model pembelajaran problem based learning (PBL) untuk meningkatkan hasil belajar siswa kelas X-3 pada mata pelajaran sosiologi SMA Negeri Kebakkramat

Penelitian ini bertujuan untuk menguji kembali pada Asset (ROA), Return on Equity (ROE), penghasilan Per Saham (EPS) efek signifikan untuk kembali di PT.. Bank

Trans Studio Makasar dibangun di atas lahan seluas 2.7 Hektar yang menyajikan 21 wahana permainan dan bermacam bentuk hiburan yang terdapat dalam 4 kawasan dengan tema