modul praktikum s.data

35
STRUKTUR DATA Modul Praktikum Fakultas Ilmu Komputer Disusun Oleh: Tim Fasilkom [2013] UNIVERSITAS MUHAMMADIYAH RIAU

Upload: beny-setiadi

Post on 13-Aug-2015

66 views

Category:

Documents


0 download

DESCRIPTION

MODUL PRAKTIKUM S.DATA

TRANSCRIPT

Page 1: MODUL PRAKTIKUM S.DATA

STRUKTUR DATA Modul Praktikum

Fakultas Ilmu Komputer

Disusun Oleh: Tim Fasilkom [2013]

UNIVERSITAS MUHAMMADIYAH RIAU

Page 2: MODUL PRAKTIKUM S.DATA

i

IDENTITAS MAHASISWA

NIM :

NAMA :

KELAS :

Page 3: MODUL PRAKTIKUM S.DATA

ii

KATA PENGANTAR

Panduan praktikum ini terdiri dari 8 pertemuan, yang tiap pertemuan

saling berkaitan satu dengan yang lainnya. Panduan praktikum ini dibuat untuk

pengguna awam yang akan mempelajari Struktur Data menggunakan bahasa

c++.

Pada modul ini, praktikan lebih diarahkan untuk langsung mencoba materi

praktikum dengan menjawab semua pertanyaan yang ada setahap demi

setahap, untuk memudahkan pemahaman terhadap materi praktikum yang

disampaikan. Praktikan sangat diharapkan mempraktekkan sendiri setiap

pertanyaan dan pelaksanaan percobaan yang dilakukan sehingga praktikan

dapat lebih memahami materi praktikum yang ada berdasarkan pengalaman

yang telah dilakukannya sendiri.

Akhirnya semoga modul ini dapat memberikan manfaat bagi segenap

praktikan.

Pekanbaru, Februari 2013

Penyusun

Page 4: MODUL PRAKTIKUM S.DATA

iii

DAFTAR ISI

IDENTITAS MAHASISWA .............................................................................................. i

KATA PENGANTAR ....................................................................................................... ii

DAFTAR ISI .....................................................................................................................iii

KONTRAK PRAKTIKUM .............................................................................................. iv

ARRAY dan POINTER ...................................................................................................... 1

STRUCTURE ..................................................................................................................... 5

FUNGSI .............................................................................................................................. 8

SINGLE LINKED LIST ................................................................................................... 11

DOUBLE LINKED LIST ................................................................................................. 15

STACK ............................................................................................................................. 19

QUEUE ............................................................................................................................. 22

TREE ................................................................................................................................. 26

REFERENSI ..................................................................................................................... 30

Page 5: MODUL PRAKTIKUM S.DATA

iv

KONTRAK PRAKTIKUM Nama Mata Kuliah : Praktikum Struktur Data Mata Kuliah Prasyarat : Tempat Pertemuan : Lab. Komputer

Alur bagi peserta praktikum : 1. Peserta Pratikum wajib menggunakan jas almamater. 2. Peserta praktikum harus membawa modul praktikum. 3. Peserta praktikum mendapatkan pengarahan langkah-langkah praktikum dari

asisten, kemudian peserta praktikum mengerjakan latihan beserta soal-soalnya. Hasil pengerjaan tersebut kemudian akan dinilai oleh asisten.

4. Tugas praktikum dikerjakan di rumah, dan dikerjakan sesuai dengan format laporan yang telah dicontohkan.

5. Peserta praktikum mendemokan implementasi tugas pada asisten (pada saat masuk praktikum hari selanjutnya). Penilaian yang dilakukan oleh asisten bersifat WISIWYG (What I see Is What You Get).

Peraturan Praktikum :

1. Praktikan harus menghadiri setiap sesi praktiku, tidak hadir tanpa keterangan akan menyebabkan hak menjadi praktikan gugur (nilai E).

2. Laporan praktikum dikumpulkan pada praktikum berikutnya.

Grade Penilaian Praktikum :

1. Percobaan 20% 2. Jawaban Pertanyaan 30% 3. Tugas 50%

Catatan: Kehadiran harus 100%, apabila tidak mengikuti praktikum diwajibkan mengganti (inhal) setelah praktikum selesai semua. Maksimal inhal adalah 2 kali, karena apabila lebih dari 2 kali maka mahasiswa dianggap tidak lulus.

Page 6: MODUL PRAKTIKUM S.DATA

1

ARRAY DAN POINTER

1.1. Tujuan :

Setelah menyelesaikan modul ini, anda diharapkan dapat : a. Memahami penerapan pointer dan array di dalam Bahasa C ++

b. Menggunakan pointer dan array di dalam program lainnya

1.2. Pelaksanaan percobaan :

a. Percobaan Array satu dimensi

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan

1 #include <iostream.h>

2 #include <conio.h>

3 //Array satu dimensi

4 main()

5 {

6 int Nilai [10]={8, 12, 20, 15, 7, 5, 6, 4,

32, 3};

7 int i, Jumlah=0;

8

9 float Rata_Rata;

10 //Menghitung jumlah

11 for (i=0, i<10; i++)

12 Jumlah+=Nilai [i];

13

14 Rata_Rata= (float) Jumlah / 10;

15

16 //Mencetak Elemen Array

17 cout<<”\n\nDeretan Bilangan = “ ;

18 for (i=0; i<10; i++)

19 cout<Nilai [i] <<” “ ;

20

21 //Mencetak Harga Jumlah

22 cout<<”\nJumlah Bilangan = “<<Jumlah;

23 cout<<”\nRata-Rata Bilangan = “<<Rata_Rata;

24 getch() ;

25 }

Tanggal :

Percobaan Pertanyaan Tugas

Asisten :

Waktu : 75 Menit

Page 7: MODUL PRAKTIKUM S.DATA

2

b. Percobaan Array dua dimensi

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan

1 #include <iostream.h>

2 #include <conio.h>

3

4 main()

5 {

6 int Mat_A [3] [4]={{3,1,6,8}, {5,2,3,4},{6,1,2,4}};

7 int i j;

8

9 //Mencetak Elemen Matriks

10

11 for (i=0; i<3; i++)

12 {

13 for (j=0; j<4; j++)

14 cout <<Mat_A [i] [j]<<” “ ;

15 cout <<endl ;

16 }

17 getch () ;

18 }

c. Percobaan Pointer

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan 1 #include <iostream.h>

2 #include <conio.h>

3

4 void main()

5 {

6

7 X int x = 8

8 C int *xPtr;

9 xPtr = &x;

10

11 cout<<”Nilai x = “<<x<<endl;

12 cout<<”Alamat x = “<<&x<<endl;

13 N cout<<”Alamat x = “<<xPtr<<endl;

14 cout<<”Nilai yang disimpan pada alamat “;

15 cout<<”xPtr<<” adalah “<<*xPtr;

16

17 getch();

18

19 }

Page 8: MODUL PRAKTIKUM S.DATA

3

d. Percobaan Pointer & Array

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan 1 #include <stdio.h>

2 #include <conio.h>

3 #include <iostream.h>

4

5 main()

6 {

7 X int Nilai []={45, 23, 50, 8, 12, 10, 15};

8 C int *Ptr_Nilai;

9 int i;

10 Ptr_Nilai = Nilai;

11

12 cout<<”\nNilai Ptr_Nilai : “<<Ptr_Nilai;

13 N cout<<”\nAlamat array Nilai : “<<Ptr_Nilai;

14 cout<<”\nNilai yang ada pada alamat “<<Ptr_Nilai

<<”adalah “<<*Ptr_Nilai;

15 cout<<”\nElemen array indeks pertama :

“<<Nilai[0];

16 cout<<”\n\nElemen Array (dengan Array) : “;

17

18 for(i=0;i<7;i++)

19 cout<<Nilai[i]<<” “;//mencetak elemen array

20 cout<<”\n\nElemen Array (dengan pointer) “;

21 for(i=0;i<7;i++);

22 cout<<*(Nilai+i)<<” “;//mencetak elemen array

29 getch();

30 }

1.3. Pertanyaan hasil percobaan :

1. Jelaskan apa fungsi baris ke 13 pada percobaan b ! ................................................................................................................... ................................................................................................................... ...................................................................................................................

2. Jelaskan maksud tanda “ & ” dari baris ke 9 pada percobaan c ! ................................................................................................................... ...................................................................................................................

Page 9: MODUL PRAKTIKUM S.DATA

4

3. Jelaskan lagi bagaimana cara mengakses data yang ada di dalam array

dua dimensi, berdasarkan percobaan yang telah dilakukan ! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

1.4. Tugas :

Buatlah program untu membuat matrik 3 x 3, Kemudian pada setiap

elemen jumlahkan dengan 1 untuk baris pertama, jumlahkan dengan 2

untuk baris ke dua, dan jumlahkan dengan 3 untuk baris ke tiga !

Kondisi matrik awal

Kondisi matrik setelah dijumlahkan

1 2 3

4 5 6

7 8 9

2 3 4

6 7 8

10 11 12

Page 10: MODUL PRAKTIKUM S.DATA

5

STRUCTURE

2.1. Tujuan :

Setelah menyelesaikan modul ini, anda diharapkan dapat memahami

penggunaan/ penerapan structure di dalam pemrograman bahasa C++

2.2. Pelaksanaan percobaan :

a. Pemakaian Structure

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan 1 #include <stdio.h>

2 #include <conio.h>

3 #include <iostream.h>

4

5 struct Mahasiswa

6 {

7 X char Nim [9];

8 C char Nama [25];

9 char Alamat [40];

10 short Umur;

11 };

12

13 N main()

14 {

15 Mahasiswa Mhs;

16 cout<<”Nim : “;

17 cin.getline(Mhs.Nim,9);

18 cout<<Nama : “;

19 cin.getline(Mhs.Nama,25);

20 cout<<Alamat : “;

21 cin.getline(Mhs.Alamat,40);

22 cout<<”Umur : “;

23 cin>> Mhs.Umur;

24

25 cout<<”\n\n\nNim : “<< Mhs.Nim;

26 cout<<”\nNama : “<< Mhs.Nama;

27 cout<<”\nAlamat : “<< Mhs.Alamat;

28 cout<<”\nUmur : “<< Mhs.Umur;

29 getch();

30 }

Tanggal :

Percobaan Pertanyaan Tugas

Asisten :

Waktu : 75 Menit

Page 11: MODUL PRAKTIKUM S.DATA

6

b. Array dalam Struture

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan 1 #include <stdio.h>

2 #include <conio.h>

3 #include <iostream.h>

4

5 struct Mahasiswa

6 {

7 X char Nim [9];

8 C char Nama [25];

9 char Alamat [40];

10 int Umur;

11 };

12

13 N Mahasiswa Mhs[5]

14 int i;

15 for(i=0; i<5; i++)

16 {

17 cout<<”Nim : “;

18 cin>>Mhs[i].Nim;

19 cout<<”Nama : “;

20 cin>>Mhs[i].Nama;

21 cout<<”Alamat : ”;

22 cin>>Mhs[i].Alamat;

23 cout<<”Umur : “;

24 cin>> Mhs[i].Umur;

25 }

26 for(i=0; i<5; i++)

27 {

28 cout<<”\n\nNim : “<< Mhs[i].Nim;

29 cout<<”\nNama : “<< Mhs[i].Nama;

30 cout<<”\nAlamat : “<< Mhs[i].Alamat;

31 cout<<”\nUmur : “<< Mhs[i].Umur;

32 }

33 getch();

34 }

Page 12: MODUL PRAKTIKUM S.DATA

7

2.3. Pertanyaan hasil percobaan :

1. Jelaskan ada berapa struct dan elemen apa saja serta mempunyai tipe

data apa aja struct dan masing-masing elemenya. pada percobaan a ! ................................................................................................................... ................................................................................................................... ...................................................................................................................

2. Jelaskan fungsi sintak “ getline ” pada percobaan b ! ................................................................................................................... ................................................................................................................... ...................................................................................................................

3. Tunjukkan pada baris berapa dan tuliskan kembali baris tersebut, yang

menunjukkan penggunaan struct untuk suatu variable! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

2.4. Tugas :

Modifikasi program pada percobaan b, sehingga program tersebut dapat

menampung 10 mahasiswa, serta dapat menampung data nama, jenis

kelamin, tanggal lahir, alamat, dan no hp/ telp !

Page 13: MODUL PRAKTIKUM S.DATA

8

FUNGSI

3.1. Tujuan :

Setelah menyelesaikan modul ini, anda diharapkan dapat memahami

penggunaan/ penerapan fungsi di dalam pemrograman bahasa C++

3.2. Pelaksanaan percobaan :

a. Fungsi dengan return

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan 1 #include <iostream.h>

2 #include <conio.h>

3

4 int Maksimum(int a, int b, int c)

5 void main()

6 {

7

8 X int a = 8, b = 12, c = -5;

9 C cout<<”Nilai a = “<<a;

10 cout<<”\nNilai b = “<<b;

11 cout<<”\nNilai c = “<<c;

12 cout<<”\nNilai Terbesar : “<<Maksimum(a,b,c);

13 N getch();

14

15 }

16 int Maksimum(int x, int y, int z)

17 {

18

19 int Besar = x;

20 if(y > Besar)

21 Besar = y;

22 if(z > Besar)

23 Besar = z;

24 return (Besar)

25 }

Tanggal :

Percobaan Pertanyaan Tugas

Asisten :

Waktu : 75 Menit

Page 14: MODUL PRAKTIKUM S.DATA

9

b. Fungsi tanpa return

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan 1 #include <iostream.h>

2 #include <conio.h>

3

4 void Tukar(int a int b);

5 void main()

6 {

7

8 X int a = 8, b = -5;

9 C cout<<”Nilai a dan b Sebelumnya : “<<a<<” & “<<b;

10 Tukar(a,b)

11 cout<<”\nNilai a dan b Setelah ditukar : “<<a<<” &

“<<b;

12 getch();

13 N

14 }

15 void Tukar(int x, int y)

16 {

17

18 int z;

19 z = x;

20 x = y;

21 y = z;

22

23 }

3.3. Pertanyaan hasil percobaan :

1. Jelaskan perbedaan dari percobaan a dengan percobaan b! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

2. Jelaskan yang terjadi apabila baris ke – 4 pada percobaan b dihapus ! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

Page 15: MODUL PRAKTIKUM S.DATA

10

3.4. Tugas :

Modifikasi program pada percobaan b pada praktikum structure, sehingga

terdapat fungsi memasukkan data dan fungsi mencetak atau memunculkan

data!

Page 16: MODUL PRAKTIKUM S.DATA

11

SINGLE LINKED LIST

4.1. Tujuan :

Setelah menyelesaikan modul ini, anda diharapkan dapat memahami

membuat fungsi-fungsi operasi dalam single linked list di dalam

pemrograman bahasa C++

4.2. Pelaksanaan percobaan :

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan

1 #include <iostream.h>

2 #include <conio.h>

3 #include <stdlib.h>

4

5 typedef struct node *simpul;

6 struct node{

7 char Isi;

8 simpul Next; };

9 void Sisip_Depan(simpul &L, char elemen);

10 void Sisip_Belakang(simpul &L, char elemen);

11 void Hapus_Depan(simpul &L);

12 void Hapus_Belakang(simpul &L);

13 void Cetak(simpul L);

14

15 main(){

16 char huruf, huruf2;

17 simpul L = NULL;

18 cout<<”OPERASI PADA SINGLE LINKED

LIST”<<endl<<endl;

19 cout<<”Penyisipan Simpul di depan”<<endl;

20 cout<<”Masukkan Huruf:”;cin>>huruf;

21 Sisip_Depan(L, huruf);

22 cout<<”Masukkan Huruf:”;cin>>huruf;

23 Sisip_Depan(L, huruf);

24 cout<<”Masukkan Huruf:”;cin>>huruf;

25 Sisip_Depan(L, huruf);

26 cout<<”Masukkan Huruf:”;cin>>huruf;

27 Sisip_Depan(L, huruf);

Tanggal :

Percobaan Pertanyaan Tugas

Asisten :

Waktu : 75 Menit

Page 17: MODUL PRAKTIKUM S.DATA

12

28 Cetak(L);

29 cout<<”Penyisipan Simpul di belakang”<<endl;

30 cout<<”Masukkan Huruf:”;cin>>huruf2;

31 Sisip_Belakang(L, huruf2);

32 cout<<”Masukkan Huruf:”;cin>>huruf2;

33 Sisip_Belakang(L, huruf2);

34 cout<<”Masukkan Huruf:”;cin>>huruf2;

35 Sisip_Belakang(L, huruf2);

36 cout<<”Masukkan Huruf:”;cin>>huruf2;

37 Sisip_Belakang(L, huruf2);

38 Cetak(L);

39 cout<<”Setelah hapus depan”<<endl;

40 Hapus_Depan(L);

41 Cetak(L);

42 getch();

43 }

44

45 void Sisip_Depan(simpul &L, char elemen){

46 simpul baru;

47 baru = (simpul)malloc(sizeof(simpul));

48 baru->Isi = elemen;

49 baru->Next = NULL;

50 if(L == NULL){

51 L = baru;

52 }else{

53 baru->Next = L;

54 L = baru;

55 }

56 }

57

58 void Sisip_Belakang(simpul &L, char elemen){

59 simpul bantu, baru;

60 baru = (simpul)malloc(sizeof(simpul));

61 baru->Isi = elemen;

62 baru->Next = NULL;

63 if(L == NULL){

64 L = baru;

65 }else{

66 bantu = L;

67 while(bantu->Next != NULL)

68 bantu = bantu->Next;

69 bantu->Next = baru;

70 }

71 }

72

73 void Cetak(simpul L){

74 simpul bantu;

75 if(L == NULL)

76 cout<<”LIST KOSONG………”<<endl;

Page 18: MODUL PRAKTIKUM S.DATA

13

77 else{

78 bantu == L;

79 cout<<”Isi Linked List: “;

80 while(bantu->Next != NULL){

81 cout<<bantu->Isi<<””;

82 bantu == bantu->Next;

83 }

84 cout<<bantu->Isi;

85 }

86 }

87

88 void Hapus_Depan(simpul &L){

89 simpul Hapus;

90 if(L == NULL)

91 cout<<”LIST KOSONG………”<<endl;

92 else{

93 Hapus == L;

94 L = L->Next;

95 Hapus->Next = NULL;

96 free(Hapus);

97 }

98 }

4.3. Pertanyaan hasil percobaan :

1. Jelaskan fungsi sintak “malloc” pada percobaan di atas! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

2. Ada berapa fungsi yang merupakan Operasi dalam single linked list

pada percobaan di atas ? Jelaskan masing-masing! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

Page 19: MODUL PRAKTIKUM S.DATA

14

4.4. Tugas :

Tambahkan fungsi Hapus_Belakang(simpul DL) pada program diatas,

kemudian panggil di fungsi main()!

Page 20: MODUL PRAKTIKUM S.DATA

15

DOUBLE LINKED LIST

5.1. Tujuan :

Setelah menyelesaikan modul ini, anda diharapkan dapat memahami

membuat fungsi-fungsi operasi dalam double linked list di dalam

pemrograman bahasa C++

5.2. Pelaksanaan percobaan :

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan

1 #include <iostream.h>

2 #include <conio.h>

3 #include <stdlib.h>

4 #define true 1

5 #define false 0

6

7 typedef struct node *simpul;

8 struct node{

9 char Isi;

10 simpul kanan;

11 simpul kiri; };

12 void Sisip_Depan(simpul &DL, char elemen);

13 void Sisip_Belakang(simpul &DL, char elemen);

14 void Hapus_Depan(simpul &DL);

15 void Hapus_Belakang(simpul &DL);

16 void Cetak(simpul DL);

17

18 main(){

19 char huruf, huruf2;

20 simpul DL = NULL;

21 cout<<”OPERASI PADA DOUBLE LINKED

LIST”<<endl<<endl;

22 cout<<”Penyisipan Simpul di depan”<<endl;

23 cout<<”Masukkan Huruf:”;cin>>huruf;

24 Sisip_Depan(DL, huruf);

25 cout<<”Masukkan Huruf:”;cin>>huruf;

26 Sisip_Depan(DL, huruf);

27 cout<<”Masukkan Huruf:”;cin>>huruf;

Tanggal :

Percobaan Pertanyaan Tugas

Asisten :

Waktu : 75 Menit

Page 21: MODUL PRAKTIKUM S.DATA

16

28 Sisip_Depan(DL, huruf);

29 cout<<”Masukkan Huruf:”;cin>>huruf;

30 Sisip_Depan(DL, huruf);

31 Cetak(DL);

32 cout<<”Penyisipan Simpul di belakang”<<endl;

33 cout<<”Masukkan Huruf:”;cin>>huruf2;

34 Sisip_Belakang(DL, huruf2);

35 cout<<”Masukkan Huruf:”;cin>>huruf2;

36 Sisip_Belakang(DL, huruf2);

37 cout<<”Masukkan Huruf:”;cin>>huruf2;

38 Sisip_Belakang(DL, huruf2);

39 cout<<”Masukkan Huruf:”;cin>>huruf2;

40 Sisip_Belakang(DL, huruf2);

41 Cetak(DL);

42 cout<<”Setelah hapus depan”<<endl;

43 Hapus_Depan(DL);

44 Cetak(DL);

45 getch();

46 }

47

48 void Sisip_Depan(simpul &DL, char elemen){

49 simpul baru;

50 baru = (simpul)malloc(sizeof(simpul));

51 baru->Isi = elemen;

52 baru->kanan = NULL;

53 baru->kiri = NULL;

54 if(DL == NULL){

55 DL = baru;

56 }else{

57 baru->kanan = DL;

58 DL->kiri = baru;

59 DL = baru;

60 }

61 }

62

63 void Sisip_Belakang(simpul &DL, char elemen){

64 simpul bantu, baru;

65 baru = (simpul)malloc(sizeof(simpul));

66 baru->Isi = elemen;

67 baru->kanan = NULL;

68 baru->kiri = NULL;

69 if(DL == NULL){

70 DL = baru;

71 }else{

72 bantu = DL;

73 while(bantu->Next != NULL)

74 bantu = bantu->kanan;

75 bantu->kanan = baru;

76 baru->kiri = bantu;

Page 22: MODUL PRAKTIKUM S.DATA

17

77 }

78 }

79

80 void Cetak(simpul DL){

81 simpul bantu;

82 if(DL == NULL)

83 cout<<”LIST KOSONG………”<<endl;

84 else{

85 bantu == DL;

86 cout<<”Isi Linked List: “;

87 while(bantu->Next != NULL){

88 cout<<bantu->Isi<<” ”;

89 bantu == bantu->Next;

90 }

91 cout<<bantu->Isi;

92 }

93 }

94

95 void Hapus_Depan(simpul &DL){

96 simpul Hapus;

97 if(DL == NULL)

98 cout<<”LIST KOSONG………”<<endl;

99 else{

100 Hapus == DL;

101 DL = DL->kanan;

102 DL->kiri = NULL;

103 free(Hapus);

104 }

105 }

5.3. Pertanyaan hasil percobaan :

1. Jelaskan mengapa pada struct yang digunakan dalam percobaan di atas

ada field simpul kanan dan simpul kiri! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

Page 23: MODUL PRAKTIKUM S.DATA

18

2. Ada berapa fungsi yang merupakan Operasi dalam double linked list

pada percobaan di atas ? Jelaskan masing-masing! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

5.4. Tugas :

Tambahkan fungsi Hapus_Belakang(simpul DL) pada program diatas,

kemudian panggil di fungsi main()!

Page 24: MODUL PRAKTIKUM S.DATA

19

STACK

6.1. Tujuan :

Setelah menyelesaikan modul ini, anda diharapkan dapat memahami

membuat fungsi-fungsi operasi dalam stack di dalam pemrograman bahasa

C++

6.2. Pelaksanaan percobaan :

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan

1 #include <iostream.h>

2 #include <conio.h>

3 #define MaxS 10

4

5 struct Stack

6 {

7

8 X char Isi[MaxS];

9 C unsigned int Top;

10 };

11

12 void INITS (Stack &S);

13 N void PUSH(Stack &S, char Data);

14 void CETAK(Stack S);

15 void POP(Stack &S, char &Hsl);

16

17 main()

18 {

19 char huruf;

20 Stack S;

21 INITS(S);

22

23 cout<<”Masukkan Karakter :”;

24 cin>>huruf;

25 PUSH(S,huruf);

26 cout<<”Masukkan Karakter :”;

27 cin>>huruf;

28 PUSH(S,huruf);

Tanggal :

Percobaan Pertanyaan Tugas

Asisten :

Waktu : 75 Menit

Page 25: MODUL PRAKTIKUM S.DATA

20

29 cout<<”Masukkan Karakter :”;

30 cin>>huruf;

31 PUSH(S,huruf);

32 CETAK(S);

33 POP(S,huruf);

34 cout<<endl<<”Yang Dihapus...”<<huruf;

35 CETAK(S);

36 cout<<endl<<”Masukkan Karakter :”;

37 cin>>huruf;

38 PUSH(S,huruf);

39 cout<<”Masukkan Karakter :”;

40 cin>>huruf;

41 PUSH(S,huruf);

42 cout<<”Masukkan Karakter :”;

43 cin>>huruf;

44 PUSH(S,huruf);

45 CETAK(S);

46 POP(S,huruf);

47 cout<<endl<<”Yang Dihapus...”<<huruf;

48 CETAK(S);

49 getch();

50 }

51 void INITS(Stack &S)

52 {

53 S.Top = 0;

54 }

55

56 void PUSH(Stack &S, char Data)

57 {

58 if (S.Top < MaxS)

59 {

60 S.Top++;

61 S.Isi[S.Top] = Data;

62 }

63 else

64 cout<<”Stack Penuh........”;

65 }

66

67 void CETAK(Stack S)

68 {

69 int i;

70 cout<<endl<<”Isi Stack : “;

71 if (S.Top != 0)

72 {

73 for(i=1; i<=S.Top; i++)

74 {

75 cout<<S.Isi[i];

Page 26: MODUL PRAKTIKUM S.DATA

21

76 }

77 }

78 else

79 cout<<”Stack Kosong.....”;

80 }

81

82 void POP(Stack &S, char &Hsl)

83 {

84 if(S.Top != 0)

85 {

86 Hsl = S.Isi[S.Top];

87 S.Top--;

88 }

89 else

90 cout<<”Stack Kosong.....”;

91 }

6.3. Pertanyaan hasil percobaan :

1. Jelaskan cara kerja fungsi PUSH pada percobaan di atas! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

2. Jelaskan cara kerja fungsi PUSH pada percobaan di atas! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

6.4. Tugas :

Buatlah program stack dengan menggunakan fungsi-fungsi/ operasi yang

ada pada single linked list. ( Modifikasi atau gunakan fungsi-fungsi yang

telah dibuat dalam praktikum single linked list )

Page 27: MODUL PRAKTIKUM S.DATA

22

QUEUE

7.1. Tujuan :

Setelah menyelesaikan modul ini, anda diharapkan dapat memahami

membuat fungsi-fungsi operasi dalam queue di dalam pemrograman

bahasa C++

7.2. Pelaksanaan percobaan :

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan

1 #include <iostream.h>

2 #include <conio.h>

3 #include <stdlib.h>

4 typedef struct node *simpul;

5 X struct node

6 C {

7 char Isi;

8 simpul next;

9 };

10 void Sisip_Belakang(simpul &L, char elemen);

11 void Hapus_Depan(simpul &L);

12 void Cetak(simpul L);

13 main()

14 {

15 char huruf;

16 simpul L = NULL;//Pastikan Bahwa L Kosong

17 int i;

18

19

20 cout<<”\nTambah antrian \n\n;

21 for(i=1; i<=3; i++)

22 {

23 cout<<”Masukkan Huruf :”;

24 cin>>huruf;

25 Sisip_Belakang(L, huruf);

Tanggal :

Percobaan Pertanyaan Tugas

Asisten :

Waktu : 75 Menit

Page 28: MODUL PRAKTIKUM S.DATA

23

26 }

27 Cetak(L);

28 //==Hapus Simpul Depan==

29 cout<<”\nSetelah elemen antrian dikeluarkan

“<<endl;

30 Hapus_Depan(L);

31 Cetak (L);

32 cout<<”\ nSetelah elemen antrian dikeluarkan

“<<endl;

33 Hapus_Depan(L);

34 Cetak (L);

35 cout<<”\ nSetelah elemen antrian dikeluarkan

“<<endl;

36 Hapus_Depan(L);

37 Cetak (L);

38 cout<<”\nTambah antrian\n\n”;

39 for(i=1 ; i<=3;i++)

40 {

41 cout<<”Masukkan Huruf :”;

42 cin>>huruf;

43 Sisip_Belakang(L, huruf);

44 }

45 Cetak(L);

46 cout<<”\ nSetelah elemen antrian dikeluarkan

“<<endl;

47 Hapus_Depan(L);

48 Cetak(L);

49 cout<<”\ nSetelah elemen antrian dikeluarkan

“<<endl;

50 Hapus_Depan(L);

51 Cetak(L);

52 getch();

53 }

54 void Sisip_Belakang(simpul &L, char elemen)

55 {

56 simpul bantu, baru;

57 baru = (simpul)malloc(sizeof(simpul));

58 baru->Isi = elemen;

59 baru->next = NULL;

60 if(L == NULL)

61 L = baru;

62 else

63 {

64 bantu = L;

65 while(bantu->next != NULL)

66 bantu = bantu->next;

67 Bantu->next = baru;

68 }

Page 29: MODUL PRAKTIKUM S.DATA

24

}

69 Void Cetak(simpul L)

70 {

71 simpul bantu;

72 if(L==NULL)

73 cout<<”Antrian Kosong......\n”;

74 else

75 {

76 bantu = L;

77 cout<<”\nIsi Linked List : “;

78 while (bantu->next != NULL)

79 {

80 cout<<bantu->Isi<<”-->”;

81 bantu = bantu->next;

82 }

83 Cout<<bantu->Isi;

84 }

85 }

86 void Hapus_Depan(simpul &L)

87 {

88 simpul Hapus;

89 if(L==NULL)

90 cout<<”Antrian Kosong..........”;

91 else

92 {

93 Hapus = L;

94 L = L->next;

95 Hapus->next = NULL;

96 free(Hapus);

97 }

98 }

7.3. Pertanyaan hasil percobaan :

1. Jelaskan fungsi-fungsi single lingked list apa saja yang ada di dalam

program di atas, kemudian analisa mengapa fungsi-fungsi itu

digunakan dalam pembuatan program antrian! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

Page 30: MODUL PRAKTIKUM S.DATA

25

................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

7.4. Tugas :

Buatlah program antrian dengan menggunakan array. Di dalamnya

terdapat beberapa struct dan fungsi, yaitu

1. struct Queue

2. fungsi INITS : memberikan nilai 1 untuk depan dan 0 untuk

belakang

3. fungsi Empty : mengecek apakah antrian kosong

4. fungsi Full : mengecek apakah antrian penuh

5. fungsi Kosong : set antrian agar kosong

6. fungsi EnQueue : menambah isi antrian

7. fungsi DeQueue : mengurangi isi antrian

8. fungsi Cetak : mencetak isi antrian

Page 31: MODUL PRAKTIKUM S.DATA

26

TREE

8.1. Tujuan :

Setelah menyelesaikan modul ini, anda diharapkan dapat memahami

membuat fungsi-fungsi operasi dalam tree di dalam pemrograman bahasa

C++

8.2. Pelaksanaan percobaan :

Ketiklah program di bawah ini. Kemudian jalankan program dan

perbaiki jika masih ditemui kesalahan.

1 #include <iostream>

2 #include <stdlib.h>

3 #include <ctype.h>

4

5 using namespace std;

6 struct Node *createnode(long value);

7 struct Node *addnode(long value, struct Node* pNode);

8 void listnodes(struct Node *pNode);

9 void freenodes(struct Node *pNode);

10

11 struct Node {

12 long item;

13 int count;

14 struct Node *pLeft;

15 struct Node *pRight;

16 };

17

18 int main(void) {

19 long newvalue = 0;

20 struct Node *pRoot = NULL;

21 char answer = 'n';

22 cout<<"******************************\n";

23 cout<<"---- Program Sorting Binary Tree-----\n";

24 cout<<"-------------------------------------\n";

25 do {

26 cout<<"Inputkan Nilai Node: ";

27 cin>>newvalue;

28 if(pRoot == NULL)

Tanggal :

Percobaan Pertanyaan Tugas

Asisten :

Waktu : 75 Menit

Page 32: MODUL PRAKTIKUM S.DATA

27

29 pRoot = createnode(newvalue);

30 else

31 addnode(newvalue, pRoot);

32 cout<<"\nApakah anda mau inputkan nilai lagi(y or n)? "<<endl;

33 cin>>answer;

34 }

35 while(tolower(answer) == 'y');

36 cout<<"\nHasil nilai binary tree:"<<endl;

37 listnodes(pRoot);

38 freenodes(pRoot);

39 cout << "\n" << endl;

40 return 0;

41 }

42

43 struct Node *createnode(long value) {

44 struct Node *pNode = (struct Node *)malloc(sizeof(struct Node));

45 pNode->item = value;

46 pNode->count = 1;

47 pNode->pLeft = pNode->pRight = NULL;

48 return pNode;

49 }

50

51 struct Node *addnode(long value, struct Node* pNode) {

52 if(pNode == NULL)

53 return createnode(value);

54 if(value ==pNode->item) {

55 ++pNode->count;

56 return pNode;

57 }

58 if(value < pNode->item) {

59 if(pNode->pLeft == NULL) {

60 pNode->pLeft = createnode(value);

61 return pNode->pLeft;

62 }else{

63 return addnode(value, pNode->pLeft);

64 }

65 }else{

66 if(pNode->pRight == NULL) {

67 pNode-> pRight = createnode(value);

68 return pNode-> pRight;

69 } else{

70 return addnode(value, pNode-> pRight);

71 }

72 }

73 }

74

75 void listnodes(struct Node *pNode) {

76 int i;

Page 33: MODUL PRAKTIKUM S.DATA

28

77 if(pNode->pLeft != NULL)

78 listnodes(pNode->pLeft);

79 for(i = 0; i<pNode->count ; i++)

80 cout<<endl<<pNode->item<<endl;

81 if(pNode->pRight != NULL)

82 listnodes(pNode->pRight);

83 }

84

85 void freenodes(struct Node * pNode) {

86 if(pNode == NULL)

87 return;

88 if(pNode->pLeft != NULL)

89 freenodes(pNode->pLeft);

90 if(pNode->pRight != NULL)

91 freenodes(pNode->pRight);

92 free(pNode);

93 }

8.3. Pertanyaan hasil percobaan :

1. Jelaskan fungsi-fungsi apa saja yang ada di dalam program di atas,

kemudian analisa bagaimana cara kerja dari fungsi-fungsi tersebut! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................

Page 34: MODUL PRAKTIKUM S.DATA

29

8.4. Tugas :

Buatlah program tree yang dapat melakukan operasi PreOrder, InOrder,

dan PostOrder!

Page 35: MODUL PRAKTIKUM S.DATA

30

REFERENSI

Sitorus, Lamhot. Sembiring, David J.M., 2012, Konsep dan Implementasi Struktur

Data dengan C++, Andi, Yogyakarta.

A.S., Rosa. Shalahuddin, M., 2010, Modul Pembelajaran Struktur Data, Modula,

Bandung.

Kadir, Abdul. Heriyanto, 2006, Algoritma Pemrograman menggunakan C++, Andi,

Yogyakarta.

_________, 2011, Bahan ajar dan Modul Praktikum Struktur Data, Lab.

Pemrograman dan RPL, ITN Malang.

Fachrurrozi, M., 2009, Modul Praktikum Struktur Data, Comlabs Fakultas Ilmu

Komputer, Universitas Sriwijaya.