You are on page 1of 35

Fakultas Ilmu Komputer

Disusun Oleh: Tim Fasilkom


[2013]

STRUKTUR DATA
Modul Praktikum

UNIVERSITAS MUHAMMADIYAH RIAU

IDENTITAS MAHASISWA

NIM

NAMA

KELAS

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

ii

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

iii

KONTRAK PRAKTIKUM
Nama Mata Kuliah
Mata Kuliah Prasyarat
Tempat Pertemuan

: Praktikum Struktur Data


:
: 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 soalsoalnya. 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
2. Jawaban Pertanyaan
3. Tugas

20%
30%
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.

iv

ARRAY DAN POINTER


Tanggal :
Asisten :
Waktu

: 75 Menit

Percobaan

Pertanyaan

Tugas

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
2
3
4
5
6

#include <iostream.h>
#include <conio.h>
//Array satu dimensi
main()
{
int Nilai [10]={8, 12,
32, 3};
int i, Jumlah=0;

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 }

20,

15,

7,

5,

6,

4,

float Rata_Rata;
//Menghitung jumlah
for (i=0, i<10; i++)
Jumlah+=Nilai [i];
Rata_Rata= (float)

Jumlah / 10;

//Mencetak Elemen Array


cout<<\n\nDeretan Bilangan
for (i=0; i<10; i++)
cout<Nilai [i] << ;
//Mencetak Harga Jumlah
cout<<\nJumlah Bilangan
cout<<\nRata-Rata Bilangan
getch() ;

= ;

=
=

<<Jumlah;
<<Rata_Rata;

b. Percobaan Array dua dimensi


Ketiklah program di bawah ini. Kemudian jalankan program dan
perbaiki jika masih ditemui kesalahan
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#include <iostream.h>
#include <conio.h>
main()
{
int Mat_A [3] [4]={{3,1,6,8}, {5,2,3,4},{6,1,2,4}};
int i j;
//Mencetak Elemen Matriks
for (i=0; i<3; i++)
{
for (j=0; j<4; j++)
cout <<Mat_A [i] [j]<<
cout <<endl ;
}
getch () ;

c. Percobaan Pointer
Ketiklah program di bawah ini. Kemudian jalankan program dan
perbaiki jika masih ditemui kesalahan
#include <iostream.h>
#include <conio.h>

1
2
3
4
void main()
5
{
6
7X
int x = 8
8C
int *xPtr;
9
xPtr = &x;
10
11
cout<<Nilai x = <<x<<endl;
12
cout<<Alamat x = <<&x<<endl;
13N
cout<<Alamat x = <<xPtr<<endl;
14
cout<<Nilai yang disimpan pada alamat ;
15
cout<<xPtr<< adalah <<*xPtr;
16
17
getch();
18
19 }

d. Percobaan Pointer & Array


Ketiklah program di bawah ini. Kemudian jalankan program dan
perbaiki jika masih ditemui kesalahan
#include <stdio.h>
#include <conio.h>
#include <iostream.h>

1
2
3
4
5
main()
6 {
7X
int Nilai []={45, 23, 50, 8, 12, 10, 15};
8C
int *Ptr_Nilai;
9
int i;
10
Ptr_Nilai = Nilai;
11
12
cout<<\nNilai Ptr_Nilai
: <<Ptr_Nilai;
13N
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 !


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

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

10

11

12

STRUCTURE
Tanggal :
Asisten :
Waktu

: 75 Menit

Percobaan

Pertanyaan

Tugas

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
1
2
3
4
5
6
7X
8C
9
10
11
12
13N
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

Ketiklah program di bawah ini. Kemudian jalankan program dan


perbaiki jika masih ditemui kesalahan
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
struct Mahasiswa
{
char Nim [9];
char Nama [25];
char Alamat [40];
short Umur;
};
main()
{
Mahasiswa Mhs;
cout<<Nim
: ;
cin.getline(Mhs.Nim,9);
cout<<Nama
: ;
cin.getline(Mhs.Nama,25);
cout<<Alamat
: ;
cin.getline(Mhs.Alamat,40);
cout<<Umur
: ;
cin>> Mhs.Umur;
cout<<\n\n\nNim
cout<<\nNama
cout<<\nAlamat
cout<<\nUmur
getch();

:
:
:
:

<<
<<
<<
<<

Mhs.Nim;
Mhs.Nama;
Mhs.Alamat;
Mhs.Umur;

}
5

b. Array dalam Struture

1
2
3
4
5
6
7X
8C
9
10
11
12
13N
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

Ketiklah program di bawah ini. Kemudian jalankan program dan


perbaiki jika masih ditemui kesalahan
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
struct Mahasiswa
{
char Nim [9];
char Nama [25];
char Alamat [40];
int Umur;
};
Mahasiswa Mhs[5]
int i;
for(i=0; i<5; i++)
{
cout<<Nim
: ;
cin>>Mhs[i].Nim;
cout<<Nama
: ;
cin>>Mhs[i].Nama;
cout<<Alamat : ;
cin>>Mhs[i].Alamat;
cout<<Umur
: ;
cin>> Mhs[i].Umur;
}
for(i=0; i<5; i++)
{
cout<<\n\nNim
cout<<\nNama
cout<<\nAlamat
cout<<\nUmur
}
getch();
}

:
:
:
:

<<
<<
<<
<<

Mhs[i].Nim;
Mhs[i].Nama;
Mhs[i].Alamat;
Mhs[i].Umur;

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 !

FUNGSI
Tanggal :
Asisten :
Waktu

: 75 Menit

Percobaan

Pertanyaan

Tugas

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

1
2
3
4
5
6
7
8X
9C
10
11
12
13N
14
15
16
17
18
19
20
21
22
23
24
25

Ketiklah program di bawah ini. Kemudian jalankan program dan


perbaiki jika masih ditemui kesalahan
#include <iostream.h>
#include <conio.h>
int Maksimum(int a, int b, int c)
void main()
{
int a = 8, b =
cout<<Nilai
cout<<\nNilai
cout<<\nNilai
cout<<\nNilai
getch();

12, c = -5;
a
= <<a;
b
= <<b;
c
= <<c;
Terbesar : <<Maksimum(a,b,c);

}
int Maksimum(int x, int y, int z)
{
int Besar = x;
if(y > Besar)
Besar = y;
if(z > Besar)
Besar = z;
return (Besar)
}

b. Fungsi tanpa return


Ketiklah program di bawah ini. Kemudian jalankan program dan
perbaiki jika masih ditemui kesalahan
#include <iostream.h>
#include <conio.h>

1
2
3
4
void Tukar(int a int b);
5
void main()
6 {
7
8X
int a = 8, b = -5;
9C
cout<<Nilai a dan b Sebelumnya : <<a<< & <<b;
10
Tukar(a,b)
11
cout<<\nNilai a dan b Setelah ditukar : <<a<< &
<<b;
12
getch();
13N
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 !


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

3.4. Tugas :
Modifikasi program pada percobaan b pada praktikum structure, sehingga
terdapat fungsi memasukkan data dan fungsi mencetak atau memunculkan
data!

10

SINGLE LINKED LIST


Tanggal :
Asisten :
Waktu

: 75 Menit

Percobaan

Pertanyaan

Tugas

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
typedef struct node *simpul;
struct node{
char Isi;
simpul Next; };
void Sisip_Depan(simpul &L, char elemen);
void Sisip_Belakang(simpul &L, char elemen);
void Hapus_Depan(simpul &L);
void Hapus_Belakang(simpul &L);
void Cetak(simpul L);
main(){
char huruf, huruf2;
simpul L = NULL;
cout<<OPERASI PADA SINGLE LINKED
LIST<<endl<<endl;
cout<<Penyisipan Simpul di depan<<endl;
cout<<Masukkan Huruf:;cin>>huruf;
Sisip_Depan(L, huruf);
cout<<Masukkan Huruf:;cin>>huruf;
Sisip_Depan(L, huruf);
cout<<Masukkan Huruf:;cin>>huruf;
Sisip_Depan(L, huruf);
cout<<Masukkan Huruf:;cin>>huruf;
Sisip_Depan(L, huruf);
11

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

Cetak(L);
cout<<Penyisipan Simpul di belakang<<endl;
cout<<Masukkan Huruf:;cin>>huruf2;
Sisip_Belakang(L, huruf2);
cout<<Masukkan Huruf:;cin>>huruf2;
Sisip_Belakang(L, huruf2);
cout<<Masukkan Huruf:;cin>>huruf2;
Sisip_Belakang(L, huruf2);
cout<<Masukkan Huruf:;cin>>huruf2;
Sisip_Belakang(L, huruf2);
Cetak(L);
cout<<Setelah hapus depan<<endl;
Hapus_Depan(L);
Cetak(L);
getch();
}
void Sisip_Depan(simpul &L, char elemen){
simpul baru;
baru = (simpul)malloc(sizeof(simpul));
baru->Isi = elemen;
baru->Next = NULL;
if(L == NULL){
L = baru;
}else{
baru->Next = L;
L = baru;
}
}
void Sisip_Belakang(simpul &L, char elemen){
simpul bantu, baru;
baru = (simpul)malloc(sizeof(simpul));
baru->Isi = elemen;
baru->Next = NULL;
if(L == NULL){
L = baru;
}else{
bantu = L;
while(bantu->Next != NULL)
bantu = bantu->Next;
bantu->Next = baru;
}
}
void Cetak(simpul L){
simpul bantu;
if(L == NULL)
cout<<LIST KOSONG<<endl;

12

77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98

else{
bantu == L;
cout<<Isi Linked List: ;
while(bantu->Next != NULL){
cout<<bantu->Isi<<;
bantu == bantu->Next;
}
cout<<bantu->Isi;
}
}
void Hapus_Depan(simpul &L){
simpul Hapus;
if(L == NULL)
cout<<LIST KOSONG<<endl;
else{
Hapus == L;
L = L->Next;
Hapus->Next = NULL;
free(Hapus);
}
}

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!
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................

13

4.4. Tugas :
Tambahkan fungsi Hapus_Belakang(simpul DL) pada program diatas,
kemudian panggil di fungsi main()!

14

DOUBLE LINKED LIST


Tanggal :
Asisten :
Waktu

: 75 Menit

Percobaan

Pertanyaan

Tugas

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#define true 1
#define false 0
typedef struct node *simpul;
struct node{
char Isi;
simpul kanan;
simpul kiri; };
void Sisip_Depan(simpul &DL, char elemen);
void Sisip_Belakang(simpul &DL, char elemen);
void Hapus_Depan(simpul &DL);
void Hapus_Belakang(simpul &DL);
void Cetak(simpul DL);
main(){
char huruf, huruf2;
simpul DL = NULL;
cout<<OPERASI PADA DOUBLE LINKED
LIST<<endl<<endl;
cout<<Penyisipan Simpul di depan<<endl;
cout<<Masukkan Huruf:;cin>>huruf;
Sisip_Depan(DL, huruf);
cout<<Masukkan Huruf:;cin>>huruf;
Sisip_Depan(DL, huruf);
cout<<Masukkan Huruf:;cin>>huruf;

15

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

Sisip_Depan(DL, huruf);
cout<<Masukkan Huruf:;cin>>huruf;
Sisip_Depan(DL, huruf);
Cetak(DL);
cout<<Penyisipan Simpul di belakang<<endl;
cout<<Masukkan Huruf:;cin>>huruf2;
Sisip_Belakang(DL, huruf2);
cout<<Masukkan Huruf:;cin>>huruf2;
Sisip_Belakang(DL, huruf2);
cout<<Masukkan Huruf:;cin>>huruf2;
Sisip_Belakang(DL, huruf2);
cout<<Masukkan Huruf:;cin>>huruf2;
Sisip_Belakang(DL, huruf2);
Cetak(DL);
cout<<Setelah hapus depan<<endl;
Hapus_Depan(DL);
Cetak(DL);
getch();
}
void Sisip_Depan(simpul &DL, char elemen){
simpul baru;
baru = (simpul)malloc(sizeof(simpul));
baru->Isi = elemen;
baru->kanan = NULL;
baru->kiri = NULL;
if(DL == NULL){
DL = baru;
}else{
baru->kanan = DL;
DL->kiri = baru;
DL = baru;
}
}
void Sisip_Belakang(simpul &DL, char elemen){
simpul bantu, baru;
baru = (simpul)malloc(sizeof(simpul));
baru->Isi = elemen;
baru->kanan = NULL;
baru->kiri = NULL;
if(DL == NULL){
DL = baru;
}else{
bantu = DL;
while(bantu->Next != NULL)
bantu = bantu->kanan;
bantu->kanan = baru;
baru->kiri = bantu;

16

77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105

}
}
void Cetak(simpul DL){
simpul bantu;
if(DL == NULL)
cout<<LIST KOSONG<<endl;
else{
bantu == DL;
cout<<Isi Linked List: ;
while(bantu->Next != NULL){
cout<<bantu->Isi<< ;
bantu == bantu->Next;
}
cout<<bantu->Isi;
}
}
void Hapus_Depan(simpul &DL){
simpul Hapus;
if(DL == NULL)
cout<<LIST KOSONG<<endl;
else{
Hapus == DL;
DL = DL->kanan;
DL->kiri = NULL;
free(Hapus);
}
}

5.3. Pertanyaan hasil percobaan :


1.

Jelaskan mengapa pada struct yang digunakan dalam percobaan di atas


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

17

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

18

STACK
Tanggal :
Asisten :
Waktu

: 75 Menit

Percobaan

Pertanyaan

Tugas

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
2
3
4
5
6
7
8X
9C
10
11
12
13N
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

#include <iostream.h>
#include <conio.h>
#define MaxS 10
struct Stack
{
char Isi[MaxS];
unsigned int Top;
};
void
void
void
void

INITS (Stack &S);


PUSH(Stack &S, char Data);
CETAK(Stack S);
POP(Stack &S, char &Hsl);

main()
{
char huruf;
Stack S;
INITS(S);
cout<<Masukkan Karakter :;
cin>>huruf;
PUSH(S,huruf);
cout<<Masukkan Karakter :;
cin>>huruf;
PUSH(S,huruf);

19

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

void INITS(Stack &S)


{
S.Top = 0;
}
void PUSH(Stack &S, char Data)
{
if (S.Top < MaxS)
{
S.Top++;
S.Isi[S.Top] = Data;
}
else
cout<<Stack Penuh........;
}
void CETAK(Stack S)
{
int i;
cout<<endl<<Isi Stack : ;
if (S.Top != 0)
{
for(i=1; i<=S.Top; i++)
{
cout<<S.Isi[i];

20

76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

}
}
else
cout<<Stack Kosong.....;
}
void POP(Stack &S, char &Hsl)
{
if(S.Top != 0)
{
Hsl = S.Isi[S.Top];
S.Top--;
}
else
cout<<Stack Kosong.....;
}

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 )

21

QUEUE
Tanggal :
Asisten :
Waktu

: 75 Menit

Percobaan

Pertanyaan

Tugas

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
2
3

#include <iostream.h>
#include <conio.h>
#include <stdlib.h>

4
typedef struct node *simpul;
5 X struct node
6C
{
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);

22

26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

}
Cetak(L);
//==Hapus Simpul Depan==
cout<<\nSetelah elemen antrian dikeluarkan
<<endl;
Hapus_Depan(L);
Cetak (L);
cout<<\ nSetelah elemen antrian dikeluarkan
<<endl;
Hapus_Depan(L);
Cetak (L);
cout<<\ nSetelah elemen antrian dikeluarkan
<<endl;
Hapus_Depan(L);
Cetak (L);
cout<<\nTambah antrian\n\n;
for(i=1 ; i<=3;i++)
{
cout<<Masukkan Huruf :;
cin>>huruf;
Sisip_Belakang(L, huruf);
}
Cetak(L);
cout<<\ nSetelah elemen antrian dikeluarkan
<<endl;
Hapus_Depan(L);
Cetak(L);
cout<<\ nSetelah elemen antrian dikeluarkan
<<endl;
Hapus_Depan(L);
Cetak(L);
getch();
}

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
}

23

}
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!
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................

24

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

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

25

TREE
Tanggal :
Asisten :
Waktu

: 75 Menit

Percobaan

Pertanyaan

Tugas

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.
#include <iostream>
1
#include <stdlib.h>
2
#include <ctype.h>
3
4
using namespace std;
5
struct Node *createnode(long value);
6
struct Node *addnode(long value, struct Node* pNode);
7
void listnodes(struct Node *pNode);
8
void freenodes(struct Node *pNode);
9
10
11 struct Node {
long item;
12
int count;
13
struct Node *pLeft;
14
struct Node *pRight;
15
16 };
17
18 int main(void) {
long newvalue = 0;
19
struct Node *pRoot = NULL;
20
char answer = 'n';
21
cout<<"******************************\n";
22
cout<<"---- Program Sorting Binary Tree-----\n";
23
cout<<"-------------------------------------\n";
24
do {
25
cout<<"Inputkan Nilai Node: ";
26
cin>>newvalue;
27
if(pRoot == NULL)
28

26

29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76

pRoot = createnode(newvalue);
else
addnode(newvalue, pRoot);
cout<<"\nApakah anda mau inputkan nilai lagi(y or
n)? "<<endl;
cin>>answer;
}
while(tolower(answer) == 'y');
cout<<"\nHasil nilai binary tree:"<<endl;
listnodes(pRoot);
freenodes(pRoot);
cout << "\n" << endl;
return 0;
}
struct Node *createnode(long value) {
struct Node *pNode = (struct Node
*)malloc(sizeof(struct Node));
pNode->item = value;
pNode->count = 1;
pNode->pLeft = pNode->pRight = NULL;
return pNode;
}
struct Node *addnode(long value, struct Node* pNode) {
if(pNode == NULL)
return createnode(value);
if(value ==pNode->item) {
++pNode->count;
return pNode;
}
if(value < pNode->item) {
if(pNode->pLeft == NULL) {
pNode->pLeft = createnode(value);
return pNode->pLeft;
}else{
return addnode(value, pNode->pLeft);

}
}else{
if(pNode->pRight == NULL) {
pNode-> pRight = createnode(value);
return pNode-> pRight;
} else{
return addnode(value, pNode-> pRight);

}
}
}
void listnodes(struct Node *pNode) {
int i;

27

77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93

if(pNode->pLeft != NULL)
listnodes(pNode->pLeft);
for(i = 0; i<pNode->count ; i++)
cout<<endl<<pNode->item<<endl;
if(pNode->pRight != NULL)
listnodes(pNode->pRight);
}
void freenodes(struct Node * pNode) {
if(pNode == NULL)
return;
if(pNode->pLeft != NULL)
freenodes(pNode->pLeft);
if(pNode->pRight != NULL)
freenodes(pNode->pRight);
free(pNode);

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!
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................
...................................................................................................................

28

8.4. Tugas :
Buatlah program tree yang dapat melakukan operasi PreOrder, InOrder,
dan PostOrder!

29

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.

30

You might also like