Upload
adi-cameng
View
245
Download
4
Embed Size (px)
Citation preview
8/18/2019 Cover Praktikum Struktur Data unud
1/35
PRAKTIKUM STRUKTUR DATA
PRAKTIKUM 4
SINGLE LINKED LIST
KOMANG CAMENG ADI SAPUTRA
NIM. 1508605023
PROGRAM STUDI TEKNIK INFORMATIKA
JURUSAN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS UDAYANA
UKIT JIMARAN
2016
DAFTAR ISI
COVER....................................................................................................................!
D"#$"% !&!.................................................................................................................!!
8/18/2019 Cover Praktikum Struktur Data unud
2/35
D"#$"% '"()"%.......................................................................................................!!!
A I L"*+"&"* T,-%!
1.1.Array......................................................................................................1
1.2.Looping atau perulangan .......................................................................1
1.3.Queue ....................................................................................................2
A II PEMAHASAN
2.1.Contoh Program ....................................................................................3
2.1.1. Source code Contoh program.......................................................3
2.1.2. penjelasan contoh program .........................................................5
2.1.3. screen shoot program ..................................................................7
2.2. Latihan..................................................................................................7
2.3.1. source code ..................................................................................
2.3.2. Penjelasan Latihan.....................................................................11
2.3.3. Screen Shoot Latihan.................................................................12
A III LAMPIRAN TUGAS
3.1. !ugas ..................................................................................................13
3.1.1. Source Code !ugas....................................................................13
3.1.2. Screen shoot tugas......................................................................17
3.1.3. Penejelasan !ugas......................................................................1
A IV PENUTUP
".1. #esimpulan.........................................................................................1$
".2.Saran....................................................................................................1$
ii
8/18/2019 Cover Praktikum Struktur Data unud
3/35
DAFTAR PUSTAKA...........................................................................................20
ii
8/18/2019 Cover Praktikum Struktur Data unud
4/35
DAFTAR GAMAR
%am&ar 2.1 run contoh program .............................................................................7
%am&ar 2.2. run Latihan........................................................................................12
%am&ar 2.3. Latihan..............................................................................................1
A I
LANDASAN TEORI
1.1. P-!*$,%
Pointer adalah suatu 'aria&el yang menunju( (e alamat memory 'aria&el yang lainnya.
Suatu pointer &u(an &erisi dengan suatu nilai data seperti halnya pada 'aria&el &iasa)
'aria&el pointer &erisi dengan suatu alamat. *ntu( mende(larasi(an 'aria&el pointer
iii
8/18/2019 Cover Praktikum Struktur Data unud
5/35
mengguna(an tanda asteri( + &intang ,- didepan 'aria&el yang di de(larasi(an pada tipe
data tertentu. !anda ini juga dapat dipa(ai untu( menga(ses nilai dari 'aria&el yang
telah ditunju(. *ntu( mendapat(an alamat dari 'aria&el pointer (ita mengguna(an tanda
/.
Pende(larasian pointer0
1.2.L--!*' "$"/ ,%/"*'"*
Looping adalah se&uah program perulangan statement dengan jumlah tertentu ji(a
(ondisi terpenuhi. Perulangan a(an &erhenti ji(a nilai yang dimasu(an sudah tida(
memenuhi syarat yang di&eri(an.
acammacam looping pada C 0
•
hile loop
Synta4 0 hile ,e4pression statement
• dohile loop
Synta4 0 do statement hile ,condition
iii
Pendeklarasian variabel biasa dan pointer:
//variabel biasa
int nilai1 = 4;
float nilai2 = 3.5;
char nama[1! = "anton#; //arra$ of char %strin&'
//variabel pointer
int (nilai)p1; //dan&lin& pointer
int (nilai)p2 = *nilai1; //men+n,+k ke tipe data int
char (nilai)p3 = nama; //men+n,+k ke tipe data arra$ of char
char (nilai)p4 = *nama[!;
8/18/2019 Cover Praktikum Struktur Data unud
6/35
Secara 6ungsional hampir sama dengan hile loop) hanya saja condition dalam
dohile die'aluasi setelah e(se(usi statement) dengan (ata lain sedi(itnya satu (ali
e(se(usi statement alaupun (ondisi tida( terpenuhi.
• 6or loop
Synta4 0 6or,initialiationconditionincrease statement
1.3. L!*,+ L!&$
Lin(ed list merupa(an stru(tur yang terdiri se(umpulan node yang secara
&ersamasama merepresentasi(an se&uah urutan. Lin(ed list juga dise&ut se&uah metode
untu( menyimpan data dengan stru(tur sehingga dapat secara otomatis mencipta(an
suatu tempat di memory untu( menyimpan data yang di&utuh(an.
8e(larasi lin(ed list
Se&elum mem&uat se&uah senarai ,Lin( List (ita harus mende(larasi(an tipe
data dan pointer yang a(an (ita guna(an. Selain itu (ita juga harus mende(larasi(an list
list yang nantinya a(an (ita guna(an. Se&agai contoh 0
iii
8/18/2019 Cover Praktikum Struktur Data unud
7/35
catatan0
• 9%er&ong9 diatas merupa(an nama dari tipe data &entu(an.
• (epala) e(or) &aru) &antu)hapus merupa(an 'aria&le pointer yang &erisi alamat
memori.
• (epala merupa(an node paling aal dan selalu tetap,tida( &oleh
&erpindah.
• e(or merupa(an node paling a(hir jadi (eti(a terjadi penam&ahanse&uah node yang
dileta(an di &ela(ang ma(a pointer dari e(or a(an i(ut &erpindah.
• &aru merupa(an nama untu( node yang dicipta(an atau ditam&ah(an.
• &antu) hapus diguna(an untu( memudah(an operasi edit dan delete
iii
-incl+de "stdio.h#
t$pedef str+ct &erbon& //memb+at seb+ah tipe data bar+
$an& terdiri dari 2 field
int data; //field data bertipe inte&er
str+ct &erbon& (net; //field net mer+pakan
pointer dari list
0
erbon&;
erbon& (bar+; //variable bar+ bertipe pointer
dari list
erbon& (kepala; //variable kepala bertipe pointer dari
list
erbon& (ekor; //variable ekor bertipe pointer
dari list
erbon& (bant+; //variable bant+ bertipe pointer dari
list
erbon& (hap+s; //variable hap+s bertipe pointer dari
list
8/18/2019 Cover Praktikum Struktur Data unud
8/35
se&uah node.
A II
PEMAHASAN
iii
8/18/2019 Cover Praktikum Struktur Data unud
9/35
2.1. C-*$- P%-'%"( 1
Pada program ini) program a(an mela(u(an proses untu( mem&u(ti(an mana
alamat pointer dan mana nilai dari pointer. 8engan mengguna(an program yang &ersi6at
stasis.
2.1.1. S-/%, C-+, C-*$- P%-'%"(
2.1.2. P,*,"&"* C-*$- 1
iii
-incl+de stdio.h
-incl+de stdlib.h
int main%'
int nilai1 = 4;
int nilai2 =5;
float nilai3 =3.5;
char nama[11! = abcdef&hi,;
int (nilai)p1 = *nilai1;
int (nilai)p2 = *nilai2;
float (nilai)p3 = *nilai3;
char (nilai)p4 = nama;
printf%nilai p1 = d6 alamat = p6 +k+ran= d7n6(nilai)p16
*nilai)p16si8eof%nilai1'';
printf%nilai p2 = d6 alamat = p6 +k+ran= d7n6(nilai)p26
*nilai)p26si8eof%nilai2'';
printf%nilai p3 = f6 alamat = p6 +k+ran= d7n6(nilai)p36
*nilai)p36si8eof%nilai3'';
printf%nilai p4 = s6 alamat = p6 +k+ran=
d7n6nama6*nilai)p46si8eof%nama'';
0
8/18/2019 Cover Praktikum Struktur Data unud
10/35
Pada program contoh 1 pertama setiap 'aria&le diinisialisai dan di&eri nilai
sesuai dengan tipe data. #emudian mela(u(an inisialisai nilai dari pointer sesuai
dengan tipe data. #emudian ditampil(an mengguna(an print6. Pada saat di run) ji(a
nilai yang diam&il mengguna(an -'aria&le ma(a nilia yang a(an ditampil(an) ji(a
mengguna(an /'aria&le ma(a alamat yang a(an ditampil(an oleh program.
2.1.3. S%,,* S--$ C-*$- 1
G"()"% 2.1 %/* -*$- 1
2.2. C-*$- P%-'%"( 2
Pada contoh program ini program a(an mela(u(an pengujian ji(a pointer sama
dengan alamat pointer.
2.2.1. S-/%, C-+, C-*$- P%-'%"( 2
2.2.2. P,*,"&"* C-*$- P%-'%"( 2
Pada program ini pertama tama de(laris(an dua pointer) dan se&uah 'aria&le &ertipe
6loat. #emudian inisialisasi(an 'aria&le terse&ut dengan se&uah &ilangan decimal
#emudian tampil(an nilai dari 'aria&le sehingga (ita dapat mem&anding(an nilai
iii
-incl+de stdio.h
-incl+de stdlib.h
int main%'
float nilai6 (p16(p2;
nilai =14.54;
printf%nilai = 2.2f6 alamatn$a p7n6nilai6*nilai';
p1 =*nilai;
printf%nilai p1 = 2.2f6 alamatn$a p7n6p16*p1';
printf%m+la9m+la nilai p2 = 2.2f6 alamatn$a p7n6p26*p2';
p2 = p1;
printf%sekaran& nilai p2 = 2.2f6 alamatn$a p7n6p26*p2';
&etch%';
0
8/18/2019 Cover Praktikum Struktur Data unud
11/35
'aria&le dengan pointer yang menunju( alamat 'aria&le terse&ut. #emudian
inisialisasi(an nilai dari salah satu pointer dengan /'aria&le untu( mengam&il alamat
dari pada 'aria&le) tapi &u(an nilainya) hanya alamatnya. #emudian sama(an 'aria&le
pointer 1 dengan 'aria&le pointer 2.
2.2.3. S%,,* S--$ C-*$- P%-'%"( 2
G"()"% 2.2. R/* C-*$- P%-'%"( 2
iii
8/18/2019 Cover Praktikum Struktur Data unud
12/35
2.3. C-*$- P%-'%"( 3
Pada program ini a(an dila(u(an pengujian untu( mela(u(an pengam&ilan alamat dari
suatu 'aria&le (emudian 'aria&le lain a(an mengam&il nilai dari alamat terse&ut.
2.3.1. S-/%, C-+, C-*$- P%-'%"( 3
2.3.2. P,*,"&"* C-*$- P%-'%"( 3
iii
-incl+de stdio.h
-incl+de stdlib.h
int main%'
int (p6a=256b;
printf%nilai a=d6 alamat a = p7n6a6*a';
printf%nilai p=d6 alamat p=p7n6p6*p';
p = *a;
printf%nilai p=d6 alamat p=p7n6p6*p';
b= (p;
printf%nilai b=d6 alamat b=p7n6b6*b';
0
8/18/2019 Cover Praktikum Struktur Data unud
13/35
Pada Program ini) dila(u(an pende(larasian se&uah pointer) pende(larasian 'aria&le dan
inisialisasi se&uah 'aria&le dengan nilai. *ntu( meme&eda(an nilai dari 'aria&le 1
dengan pointer dila(u(an dengan print6 tampila(an alamat dan juga nilai dari 'aria&le
terse&ut. #emudian pointer mengam&il alamat dari 'aria&le1. #emudian ditampil(an
lagi untu( mem&anding(an) (emudian 'aria&le (edua a(an mengam&il nilai dari alamat
terse&ut dengan mengguna(an -'aria&le pointer.
2.3.3. S%,,* S--$ C-*$- P%-'%"( 3
G"()"% 2.3 R/* C-*$- P%-'%"( 3
iii
8/18/2019 Cover Praktikum Struktur Data unud
14/35
2.4. C-*$- P%-'%"( 4
Pada program " mela(u(an proses pertu(aran nilai dengan mengguna(an pointer) dan
'aria&le &antu.
2.4.1. S-/%, C-+, C-*$- P%-'%"( 4
iii
-incl+de stdio.h
-incl+de stdlib.h
int main%'
int a=256 b=126t;
int (p6(;
p=*a;
=*b;
printf%nilai $an& dit+,+k p=d6alamatn$a = p7n6(p6p';
printf%nilai $an& dit+,+k =d6alamatn$a = p7n6(6';
t = (p;
(p = (;
( = t;
printf%nilai $an& dit+,+k p sekaran& =d6alamatn$a =
p7n6(p6p';
printf%nilai $an& dit+,+k sekaran& =d6alamatn$a =
p7n6(6';
&etch%';
0
8/18/2019 Cover Praktikum Struktur Data unud
15/35
2.4.2. P,*,"&"* C-*$- P%-'%"( 4
Pada Program ini dila(u(an proses inisialisasi nilai 'aria&le a) dan &) serta
de(larasi t) pointer p dan pointer :. p mengam&il alamat dari a) : mengam&il alamat dari
& (emudian untu( memasti(annya ma(a dial(u(an proses penampilan &erupan nilai dari
alamat p dan nilai dari alamat :. (emudian dila(u(an proses pertu(aran nilai dengan
&antuan 'aria&le t) t mengam&il nilai dari alamat p) (emudian nilai dari alamat p diu&ah
menjadi nilai dari alamat :) dan yang tera(hir nilai dari alamat :; t. ma(a nilai p dan :
a(an tertu(ar.
2.4.3. S%,,* S--$ C-*$- P%-'%"( 4
G"()"% 2.4. R/* C-*$- P%-'%"( 4
2.5. C-*$- P%-'%"( 5
iii
8/18/2019 Cover Praktikum Struktur Data unud
16/35
Pada program ini a(an mela(u(an proses pengam&ilan nilai pada dangling pointer)
setelah di&eri nilai.
2.5.1. S-/%, C-+, C-*$- P%-'%"( 5
2.5.2.P,*,"&"* C-*$- P%-'%"( 5
Pada contoh program 5 ini) mende(larasi(an se&uah 'aria&le dan se&uah pointer
yang &elum memili(i nilai. #eti(a p mengam&il alamat a) dan nilai dari alamat p di&uah
menjadi 25 ma(a nilai dari a; 25.
2.5.3. S%,,* S--$ C-*$- P%-'%"( 5
iii
-incl+de stdio.h-incl+de stdlib.h
int main%'
int a6(p;
p=*a;
(p=25;
printf%nilai a= d7n6a';
0
8/18/2019 Cover Praktikum Struktur Data unud
17/35
G"()"% 2.5 R/* C-*$- P%-'%"( 5
2.6. O,%"&! A%!$("$!"
Pada program ini) a(an dila(u(an proses &agaimana mengoperasi(an aritmati(a
mengguna(an pointer.
2.6.1.S-/%, C-+, O,%"&! A%!$("$!"
iii
8/18/2019 Cover Praktikum Struktur Data unud
18/35
2.6.2.P,*,"&"* O,%"&! A%!$("$!"
Pertama dila(u(an proses de(larasi dan inisialisasi (emudian dila(u(an proses
pengam&ilan alamat oleh pointer (emudian) nilai dari alamat pointer dijumlah(andengan nilai pada alamat pointer yang lainnya) alamat dari pointer tida( dapat dila(u(an
proses aritmati(a) ji(a nilai dari alamat pointer ma(a &isa dila(u(an proses aritamati(a.
2.6.3.S%,,* S--$ O,%"&! A%$!("$!"
iii
-incl+de stdio.h
-incl+de stdlib.h
int main%'
int a6b6(p6(;
p=*a;
(p=25;
printf%nilai a=d7n6a';
printf%alamat p=p7n6p';
=*b;
printf%alamat = p7n6';
printf%nilai ab =d7n6%(p('';
p=p1;
printf%nilai p=d6 alamat p=p6(p6*p';
=91;
printf%nilai =d6 alamat =p6(6*';
0
8/18/2019 Cover Praktikum Struktur Data unud
19/35
G"()"% 2.6. R/* O,%"&! A%!$("$!"
2..C-*$- L!* L!&$
Pada program ini a(an diterap(an &agaimana penggunaan lin( list dengan
mengguna(an yaitu proses mem&uat tempat penampungan data) menam&ah(an data)
menghapus data) menyisip(an data.
2..1.S-/%, C-+, C-*$- L!* L!&$
iii
-incl+de stdio.h
-incl+de stdlib.h
t$pedef str+ct &erbon&
8/18/2019 Cover Praktikum Struktur Data unud
20/35
iii
int data;
str+ct &erbon& (net;
0erbon&;
erbon& (bar+;
erbon& (kepala;
erbon& (ekor;
erbon& (bant+;
erbon& (hap+s;
void ne?@@'
bar+9net==>?@@;
bar+9data=nilai;
0
else
printf%pembent+kan simp+l &a&al7n';
0
0
int main%'
kepala =>?@@;
ekor =>?@@;
ne
8/18/2019 Cover Praktikum Struktur Data unud
21/35
iii
ne?@@;
ne?@@;
0
8/18/2019 Cover Praktikum Struktur Data unud
22/35
iii
bant+=kepala;
?@@'
printf%d7t6bant+9data';
bant+=bant+9net;
0
hap+s=kepala;
kepala=kepala9net;
free%hap+s';
hap+s=ekor;
bant+=kepala;
?@@;
bant+=kepala;
8/18/2019 Cover Praktikum Struktur Data unud
23/35
2..2. P,*,"&"* C-*$- L!*,+ L!&$
Pada program ini) mema(ai struct) dengan isi dari struct int data) struct ger&ong
pointer ne4t. 8engan nama 'aria&le struct yaitu %er&ong. 8engan struct ger&ong
(emudian mem&uat pointer &antu) (epala) e(or) &aru) hapus. 8engan pointer &aru
(emudian mem&uat 6ungsi didalam 6ungsi proses yang terjadi adalah memesan memori
terle&ih dahulu) (arena (adang pengam&ilan memori &isa saja gagal. #emudian
program a(an masu( (e dalam perca&angan dimana nilai &aru tida( sama dengan
8/18/2019 Cover Praktikum Struktur Data unud
24/35
2..3.S%,,* S--$ C-*$- L!*,+ L!&$
G"()"% 2. R/* C-*$- P%-'%"( L!*,+ L!&$
iii
8/18/2019 Cover Praktikum Struktur Data unud
25/35
A III
LAMPIRAN TUGAS
3.1 T/'"&
program untu( mem&entu( se&uah single lin(ed list. 8ata dalam lin(ed list
adalah integer yang diinput(an oleh user. Penam&ahan (e dalam lin(ed list dila(u(an
sedemi(ian sehingga data terurut menai( secara otomatis. enu yang disedia(an adalah
se&agai &eri(ut 0
1. !am&ah 8ata (e dalam list.
2. =apus 8ata dari List.
3. =itung >ata>ata 8ata
". !ampil(an in dan a4 8ata
5. !ampil(an 8ata dalam List
3.1.1.S-/%, C-+, T/'"&
iii
#include
#include
typedef struct gerbong
{
int data;
struct gerbong *next;
}Gerbong;
8/18/2019 Cover Praktikum Struktur Data unud
26/35
iii
erbon& (bar+;
erbon& (kepala=>?@@;erbon& (ekor=>?@@;
erbon& (bant+;
erbon& (Aap+s;
erbon& (tolon&;
erbon& (tamp+n&;
void +r+t%';
void mas+kan%';
void tampilkan%';
void rata%';
void hap+s%';
void selan,+tn$a%';
int main%'
int pil6,+m6nilai6total6hilan&;
men+:
printf%Ben+: 7n';
printf%1.Cambah data7n';
printf%2.Aap+s Data7n';
printf%3.Ait+n& Eata9Eata data7n'; printf%4.Campilkan Ba dan Bin data7n';
printf%5.Campilkan data7n';
printf%Pilihan: ';
scanf%d6*pil';
s$stem%cls';
8/18/2019 Cover Praktikum Struktur Data unud
27/35
iii
if%pil==1FFpil==2FFpil==3FFpil==4FFpil==5'
s
8/18/2019 Cover Praktikum Struktur Data unud
28/35
iii
case 3:
rata%'; s$stem%pa+se';
&oto men+;
break;
case 4:
printf%ma: d7n6ekor9data';
printf%min: d7n6kepala9data';
s$stem%pa+se';
s$stem%cls';
&oto men+;
break;
case 5:
tampilkan%';
s$stem%pa+se';
s$stem%cls';
&oto men+;
break;
0
0
else
printf%pilihan tidak ada7n';
s$stem%pa+se'; s$stem%cls';
&oto men+;
0
0
8/18/2019 Cover Praktikum Struktur Data unud
29/35
iii
void mas+kan%int nilai'
bar+ = %erbon& (' malloc%si8eof%erbon&'';
if%bar+=>?@@'
bar+9net==>?@@;
bar+9data=nilai;
0
else
printf%proses &a&al7n';
0
0
void selan,+tn$a%'
if%kepala==>?@@**ekor==>?@@'
kepala=bar+;
ekor=kepala;
0
else
if%bar+9dataekor9data'
ekor9net=bar+;
ekor=bar+;
ekor9net=>?@@;
0
else if%bar+9dataekor9data'
8/18/2019 Cover Praktikum Struktur Data unud
30/35
iii
if%kepala9databar+9data'
bant+=kepala;
?@@'
if%bant+9net9databar+9data'
bar+9net=bant+9net;
bant+9net=bar+;
break;
0
else if%bant+9data==bar+9data'
bar+9net=bant+9net;
bant+9net=bar+;
break;
0
bant+=bant+9net;
0
0
else
bar+9net=kepala; kepala=bar+;
0
0
8/18/2019 Cover Praktikum Struktur Data unud
31/35
iii
else
ekor9net=bar+;
ekor=bar+;
ekor9net=>?@@;
0
0
0
void tampilkan%'
bant+=kepala;
?@@'
printf%d 6bant+9data';
bant+=bant+9net;
0
printf%tampilan data selesai7n';
0
void men&hap+s%int nilai'
bant+=kepala;
8/18/2019 Cover Praktikum Struktur Data unud
32/35
iii
else if%nilai==kepala9data'
Aap+s=kepala;
kepala=kepala9net;
free%Aap+s';
0
else if%nilai==ekor9data'
tolon&=kepala;
8/18/2019 Cover Praktikum Struktur Data unud
33/35
3.1.2.P,*,"&"* T/'"&
8idalam program mema(ai ? 6ungsi) yaitu 6ungsi untu( mem&uat data &aru)
6ungsi untu( menghu&ung(an dan mengurut(an) 6ungsi untu( menghapus) 6ungsi untu(
mencari) 6ungsi untu( tampil(an) 6ungsi untu( mencari ratarata.
Pertama program mela(u(an pende(larasian struct dengan 'aria&le didalamnya
yaitu data dan pointer ne4t.
#emudian mem&uat pointer lagi sesuai (e&utuhan. 8idalam menu terdapat 5
menu) 1 untu( menam&ah data) 2. *ntu( menghapus data)3.
A IV
PENUTUP
4.1 K,&!(/"*
8apat disimpul(an dari tugas ini) :ueue merupa(an proses pengantirian dimana
data pertama yang masu( adalah yang pertama (eluar. @ungsi diguna(an agar program
le&ih e6isien dan sedi(it mengguna(an memori.
4.2 S"%"*
Saran pada saat mela(u(an ring &uu6er) pada saat penampilan data diharap(an
le&ih teliti dengan nilai dari pada head agar tida( terjadi (esalahan dalam pengam&ilan
nilai aal.
iii
8/18/2019 Cover Praktikum Struktur Data unud
34/35
DAFTAR PUSTAKA
1. #A
8/18/2019 Cover Praktikum Struktur Data unud
35/35