modul praktikum s.data
DESCRIPTION
MODUL PRAKTIKUM S.DATATRANSCRIPT
STRUKTUR DATA Modul Praktikum
Fakultas Ilmu Komputer
Disusun Oleh: Tim Fasilkom [2013]
UNIVERSITAS MUHAMMADIYAH RIAU
i
IDENTITAS MAHASISWA
NIM :
NAMA :
KELAS :
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
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
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.
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
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 }
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 ! ................................................................................................................... ...................................................................................................................
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
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
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 }
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 !
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
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 ! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................
10
3.4. Tugas :
Modifikasi program pada percobaan b pada praktikum structure, sehingga
terdapat fungsi memasukkan data dan fungsi mencetak atau memunculkan
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
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;
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! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................
14
4.4. Tugas :
Tambahkan fungsi Hapus_Belakang(simpul DL) pada program diatas,
kemudian panggil di fungsi main()!
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
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;
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! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................
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()!
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
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];
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 )
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
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 }
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! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................
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
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
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;
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! ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ................................................................................................................... ...................................................................................................................
29
8.4. Tugas :
Buatlah program tree yang dapat melakukan operasi PreOrder, InOrder,
dan PostOrder!
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.