Struktur Data
Struktur Data
DisusunOleh
KussigitSantosa
StrukturData
UniversitasPamulang
TeknikInformatika
Jl.SuryaKencanaNo.1PamulangTelp(021)7412566,Fax.(021)7412566
TangerangSelatanBanten
PERTEMUANI
STRUKTURDATA
Bobot:4SKS
Prasyarat
:
SistimDigital
PTI
AlgoritmadanPemrograman
Perkuliahan:
24kalipertemuandikelas
2kaliUjian(UTSdanUAS)
Penilaian
Kehadiran
Tugas
UTS
UAS
:10%
:20%
:30%
:40%
StrukturData
UniversitasPamulang
TeknikInformatika
ApaituStrukturData?
PROGRAM
ALGORITMA
STRUKTURDATA
ALGORITMA
Deskripsilangkahlangkahpenyelesaianmasalahyangtersusunsecaralogis
1. Ditulisdengannotasikhusus
2. Notasimudahdimengerti
3. Notasidapatditerjemahkanmenjadisintakssuatubahasapemrograman
CONTOH
1.
2.
3.
4.
5.
6.
7.
Mencarinilaimaksimum
Mengurutkandata
Mencetakbilanganganjildari119
Menyimpandatamahasiswabaru
Mencetakdataabsensi
Mengirimemailberdasarkanjadual.
DLL
StrukturData
UniversitasPamulang
TeknikInformatika
ContohAlgoritmaMencetakAbsensi
1. BukaDataAbsensi
2. TentukanMataKuliah
3. TentukanKelas
4. TentukanFormatAbsensi(4/14kolom)
5. Tentukanbanyakpencetakan
6. Ambildatamhske1,lalucetak
7. Ulangilangkahke6sampaidatahabis
STRUKTURDATA
Modellogika/matematikyangsecarakhususmengorganisasidata
StrukturDataStatisarray/larik,rekord,himpunan.
Struktur Data Dinamis list/senarai, queue /antrian /giliran, tumpukan /stack
/timbunan,pohon,graf.
DEFINISIDATA
Data:
Faktaataukenyataanyangtercatatmengenaisuatuobyek
Pengertiandatainimenyiratkansuatunilaiyangbisadinyatakandalambentukkonstanta
atauvariabel
Konstantamenyatakannilaiyangtetap
Variabeldigunakandalamprogramuntukmenyatakannilaiyangdapatdiubahubah
selamaeksekusiberlangsung
EMPATISTILAHTENTANGDATA
TIPEDATA:
macam/isidatadidalamsuatuvariabel
OBYEKDATA:
Himpunandarielemen,
misal:xhimpunanbilanganinteger
REPRESENTASIDATA:
Suatumappingdaristrukturdatadkesuatuhimpunanstrukturdatae,
misal:booleandirepresentasikandalam0dan1
STRUKTURDATA:
koleksidarivariabelyangdinyatakandengansebuahnama,dengansifatsetiapvariabel
dapatmemilikitipeyangberlainan.Strukturdatabiasadipakaiuntukmengelompokkan
beberapainformasiyangberkaitanmenjadisebuahkesatuan
StrukturData
UniversitasPamulang
TeknikInformatika
HIRARKITIPEDATA
REVIEWC/C++
PERINTAHOUTPUT
BentukUmum:cout<<Keterangan<<variabel<<endl;
#include<iostream>
usingnamespacestd;
voidmain()
intBIL;
BIL=100;
cout<<NilaiBilanganBILadalah.:<<BIL<<endl;
Output(Tampilanpadamonitor)
NilaiBilanganBILadalah.: 100
StrukturData
UniversitasPamulang
TeknikInformatika
PERINTAHINPUT
BentukUmum:cin>>variabel;
#include<iostream>
usingnamespacestd;
voidmain()
intBIL;
cout<<MasukkanNilaiBilanganBIL.:<<endl;
cin>>BIL;
#include<iostream>
usingnamespacestd;
voidmain()
Charnama[20];
cout<<Masukkannamaanda:;cin>>nama;
cout<<Namasayaadalah:<<nama<<endl;
Hasilnya:
Masukkananamaanda:GustavStevani
Namasayaadalah:GustavStevani
StrukturData
UniversitasPamulang
TeknikInformatika
PERTEMUAN2(DATATERSTRUKTUR)
TIPEDATATERSTRUKTUR
1. String
Data yang berisi sederetan karakter dimana banyaknya karakter bisa berubahubah
sesuaidengankebutuhan
//contohprogram
#include<iostream>
usingnamespacestd;
voidmain()
{
intI;
charN[8]=JAKARTA;
for(i=0;i<=7;i++)
cout<<N[<<i<<]<<=<<N[i]<<endl;
}
StrukturData
UniversitasPamulang
TeknikInformatika
2. Larik(Array)
Arrayadalahvariabelyangmampumenyimpansejumlahnilaiyangbertipesama.
StrukturData
UniversitasPamulang
TeknikInformatika
3. Record/Struktur
Terdiri dari beberapa variabel yang terstruktur dan masingmasing variabel bisa
mempunyaitipeyangberbeda.
structmahasiswa
{
char*nama;
char*nim;
intuts,uas;
floatakhir;
chargrade;
}
4.Set>Union
Berbedadenganstruktur,anggotadariunionmenggunakansecarabersamasamaruang
penyimpananmemoriyangsama.
//contohprogram
#include<iostream>
usingnamespacestd;
unionBilBulat
unsignedintbInt;
unsignedcharcKar[4];
};
voidmain(void)
BilBulatBilangan;
Bilangan.bInt=0x56782233;
cout<<"bInt:"<<hex<<Bilangan.bInt<<endl;
cout<<"cKar[0]:"<<hex<<int(Bilangan.cKar[0])<<endl;
cout<<"cKar[1]:"<<hex<<int(Bilangan.cKar[1])<<endl;
cout<<"cKar[2]:"<<hex<<int(Bilangan.cKar[2])<<endl;
cout<<"cKar[3]:"<<hex<<int(Bilangan.cKar[3])<<endl;
Hasilnya:
bInt:56782233
cKar[0]:33
cKar[1]:22
cKar[2]:78
cKar[3]:56
StrukturData
UniversitasPamulang
TeknikInformatika
10
5. Set>Enumerasi
Merupakanhimpunandarikonstantaintegeryangdiberinama.
#include<iostream>
usingnamespacestd;
6.File
Merupakanorganisasidarisejumlahrecordsejenis.Masingmasingrecorddapatterdiri
darisatuataubeberapafielddansetiapfieldterdiridarisatuataubeberapakarakter
7.PROGRAM
Kumpulan instruksiinstruksi yang ditulis dengan aturan tertentu yang dimengerti oleh
komputeruntukmelaksanakansuatutugas.
StrukturData
UniversitasPamulang
TeknikInformatika
11
PERTEMUANIII(Statemenelementerdankendali)
PROGRAM
STATEMENELEMENTER
1.Assignment(penugasan)
Untukmemberikannilaikevariabelyangtelahdideklarasikan
Bil=3;
2.Compariason
Untukkeperluanpengambilankeputusan.Diperlukanoperatorrelasisebagaiberikut:
>,<,>=,<=,==,!=
Contoh:A=5danB=2
C=(A<B);cout<<C;Hasilnya=1
Sehingga:
StrukturData
UniversitasPamulang
TeknikInformatika
12
3.ArithmeticStatement
4.OperasiBoolean/logika:menghubungkanungkapanrelasiyanghasilnyatrueataufalse.
Operator:&&(dan),||(atau),!(not)
#include<iostream>
usingnamespacestd;
5.OperasiInput/Output
Operatorcin,cout
StandardInput:Keyboard
StandardOutput:Screen
StrukturData
UniversitasPamulang
TeknikInformatika
13
A.
OPERASIKONTROL
1. Alternatif:if,ifelse,switch
2. Pengulangan:dowhile,while,for
StrukturData
UniversitasPamulang
TeknikInformatika
14
3.Percabangan
LATIHAN
#include<iostream>
usingnamespacestd;
StrukturData
#include<iostream>
usingnamespacestd;
UniversitasPamulang
TeknikInformatika
15
KOREKSILAHKESALAHANPROGRAMDIATAS
StrukturData
UniversitasPamulang
TeknikInformatika
16
PERTEMUANIV
ARRAY(LARIK)
Arrayadalahsuatustrukturyangterdiridarisejumlahelemenyangmemilikitipedatayang
sama. Elemenelemen array tersusun secara sekuensial/ urut dalam memori komputer.
Arraydapatberupasatudimensi,duadimensi,tigadimensiataupunbanyakdimensi(multi
dimensi).
ArraySatuDimensi
ArraySatudimensitidaklainadalahkumpulanelemenelemenidentikyangtersusundalam
satu baris. Elemenelemen tersebut memiliki tipe data yang sama, tetapi isi dari elemen
tersebutbolehberbeda.
Bentukumum:
tipe_datanama_var_array[ukuran];
tipe_data
:menyatakanjenistipedataelemenlarik(int,char,float,dll)
nama_var_array :menyatakannamavariabelyangdipakai.
ukuran
:menunjukkanjumlahmaksimalelemenlarik.
INISIALISASI
Menginisialisasiarraysamadenganmemberikannilaiawalarraypadasaatdidefinisikan.
intnilai[10]={23,34,32,12,25,14,23,12,11,10};
PENGAKSESAN
nama_var_array[indeks];
Pengisian dan pengambilan nilai pada indeks tertentu dapat dilakukan dengan mengeset
nilaiataumenampilkan nilai padaindeksyangdimaksud. Pengaksesanelemenarraydapat
dilakukanberurutanataurandomberdasarkanindekstertentusecaralangsung.
Contoh:SebuaharrayA[4]menyimpandatatipeint
StrukturData
UniversitasPamulang
TeknikInformatika
17
Jumelemenarray=4elemen
Panjangarray=4elemen*4byte/elemen=16byte
ContohSoal:
1.SuatuarraydideklarasikandenganA[9],setiapelementerdiridari8byte.Jikaalamat
elemenpertamasamadg16FFH,ditanyakan:
a.Jumlahelemenarray
b.Panjangarraydalambyte
c.AlamatA[5]
Jawab:
1.&A[0]=16FFH
Lebarelemen=8byte/elemen
a.Jumlahelemenarray=9elemen
b.Panjangarray=9elemenx8byte/elemen=72byte
c.&A[5]=?
Perpindahan=(50)elemenx8byte/elemen
=40byte=28Hbyte
&A[5]=16FFH+28H=1727H
Soal:
1.SuatuarraydideklarasikandenganintAngka[12].Jikaalamatelemenpertama2C3EH,
ditanyakan:
a.Jumlahelemenarray
b.Jumlahbyteseluruhnya(panjangarray)
c.AlamatAngka[6]
2.Array2D
DeklarasiA[I]{J]
I:Jumlahbaris
J:Jumlahkolom
Urutanelemendalammemori:
StrukturData
UniversitasPamulang
TeknikInformatika
18
Urutanbarisperbaris(RowMajorOrder/RMO)
A[3][4]
0 1 2 3
0 1 2 3 4
1 5 6 7 8
2 9 10 11 12
Urutankolomperkolom(ColumnMajorOrder/CMO)
A[3][4]
0 1 2 3
0 1 4 7 10
1 2 5 8 11
2 3 6 9 12
Contoh:
intA[3][4]
A. JikamatrikdiatasdisimpandenganurutanRMO,maka:
17 14 75 10 20 50 80 11 35 60 90 12
Baris0
Baris1
Baris2
Tipedataintmemerlukan4byte/elemen.
&A[0][1]=1004H,&A[0][2]=1008H,&A[0][3]=100CH
&A[1][0]=1010H,&A[1][1]=1014H,&A[1][2]=1018
&A[1][3]=101B,&A[2][0]=1020,&A[2][1]=1024
B.JikamatrikdisimpandenganurutanCMO,maka:
17 20 35 14 50 60 75 80 90 10 11 12
Kolom0
Kolom1
Kolom2
Kolom3
&A[1][0]=1004H,&A[2][0]=1008H,&A[0][1]=100BH
&A[1][1]=1010H,&A[2][1]=1014H
StrukturData
UniversitasPamulang
TeknikInformatika
19
Penyelesaiantanpamelihatgambar:
a.JikamatrikdiatasdisimpandenganurutanRMO,maka:
Jumlahelemen/baris=4elemen/baris
Ditanya : &A[2][1]
Diketahui : &A[0][0] _
21
Pindahbaris=2barisx4elemen/baris=8elemen
Pindahkolom=1kolom=1elemen
Totalperpindahan=8+1=9elemen
=9elemenx4byte/elemen
=36byte=24Hbyte
Jadi&A[2][1]=1000H+24H=1024H
b.JikamatrikdiatasdisimpandenganurutanCMO,maka:
Jumlahelemen/kolom=3elemen/kolom
Ditanya : &A[2][1]
Diketahui : &A[0][0] _
21
Pindahkolom=1kolomx3elemen/kolom=3elemen
Pindahbaris=2baris=2elemen
Totalperpindahan=3+2=5elemen
=5elemenx4byte/elemen
=20byte=14Hbyte
Jadi&A[2][1]=1000H+14H=1014H
Soal:
Diketahuisuatuarray2DyangdideklarasikandenganintA[6][7].Alamatelemenpertama
10CCH.Ditanyakan:
a.Jumlahelemen
b.Jumlahbyteseluruhnya
c.AlamatA[2,5](PenempatandlmmemorisecaraRMOdanCMO)
3.Array3D
DiketahuiarrayA[2][3][3]denganlebarelemen2byte.Alamatelemenpertama1000H.
Ditanya&A[1][2][1]?
Jawab:
0 1 2 0 1 2
0 10 30 50 0 50 12 17
1 25 15 17 1 24 22 37
2 32 35 36 2 46 11 18
Blok0Blok1
a.RMO
Jumlahelementiapbaris=3elemen/baris
Jumlahelementiapbolk=9elemen/blok
StrukturData
UniversitasPamulang
TeknikInformatika
20
Ditanya : &A[1][2][1]
Diketahui : &A[0][0][0] _
121
Pindahkolom=1kolom=1elemen
Pindahbaris=2barisx3elemen/baris=6elemen
Pindahblok=1blokx9elemen/blok=9elemen
Totalperpindahan=1+6+9=16elemenx2byte/elemen
=32byte=20Hbyte
Jadi&A[1][2][1]=1000H+20H=1020H
b.CMO
Jumlahelementiapkolom=3elemen/kolom
Jumlahelementiapbolk=9elemen/blok
Ditanya : &A[1][2][1]
Diketahui : &A[0][0][0] _
121
Pindahkolom=1kolomx3elemen/kolom=3elemen
Pindahbaris=2baris=2elemen
Pindahblok=1blokx9elemen/blok=9elemen
Totalperpindahan=3+2+9=14elemenx2byte/elemen
=28byte=1CHbyte
Jadi&A[1][2][1]=1000H+1CH=101CH
Soal:
Diketahuisuatuarray3DyangdideklarasikandenganintA[4][3][6].Alamatelemenpertama
adalahCBBDH.
Ditanyakan:
a.Jumlahelemen
b.Jumlahbyteseluruhnya
c.&A[2][2][4]
Contoh1.
#include<iostream>
usingnamespacestd;
voidmain()
{
intbilly[]={16,2,77,40,12071};
intn,result=0;
for(n=0;n<5;n++)
{
result+=billy[n];
}
cout<<result);
}
StrukturData
UniversitasPamulang
TeknikInformatika
21
Contoh2.
#include<iostream>
usingnamespacestd;
voidmain()
{
intA[5]={20,9,1986,200,13},n;
cout<<"Datayanglama<<endl;
for(n=0;n<5;n++)
{
cout<<A[n];
}
cout<<endl;
cout<<"Datayangbaru:"<<endl;
A[0]=4;
A[1]=2;
A[2]=1;
A[3]=3;
A[4]=5;
for(n=0;n<5;n++)
{
cout<<A[n];
}
}
TUGAS
1. Buatlahkesimpulandarimasingmasingprogramdiatas.
2. Buatlahprogramuntukmenentukannilaiterkecidanterbesar
StrukturData
UniversitasPamulang
TeknikInformatika
22
PERTEMUANV
LANJUTANARRAYdimensi1
Arrayadalahsuatustrukturyangterdiridarisejumlahelemenyangmemilikitipedatayang
sama.Elemenelemenarraytersusunsecarasekuensial/urutdalammemorikomputer.
Arraydapatberupasatudimensi,duadimensi,tigadimensiataupunbanyakdimensi(multi
dimensi).
ArraySatuDimensi
ArraySatudimensitidaklainadalahkumpulanelemenelemenidentikyangtersusundalam
satubaris.Elemenelementersebutmemilikitipedatayangsama,tetapiisidari
elementersebutbolehberbeda.
/*ProgramMencaribilanganTerkecildanterbesardidalamarray*/
#include<iostream>
Usingnamespacestd;
Output:
Nilaimaksimum:76
Nilaiminimum:12
TUGAS:
1. Jelaskankonsepprogramtersebutdiatas
2. Buatlahkesimpulandariprogramdiatas.
StrukturData
UniversitasPamulang
TeknikInformatika
23
PERTEMUANVI(ArrayDimensiDua)
TUJUAN:
Agar mahasiswa memahami cara penjumlahan, pengurangan dan perkalian matriks
menggunakanArraydimensi2
TEORI:
Array dua dimensi sering digambarkan sebagai sebuah matriks, tabel yang merupakan
perluasandariarraysatudimensi.Jikaarraysatudimensihanyaterdiridarisebuahbarisdan
beberapakolomelemen,makaarrayduadimensiterdiridaribeberapabarisdanbeberapa
kolomelemenyangbertipesamasehinggadapatdigambarkansebagaiberikut:
TabelDatapenjualanpertahun
Tahunpenjualan
no
2001
2002
2003
2004
2005
2006
2007
1
45
43
65
12
21
12
21
2
32
34
23
56
54
34
45
3
11
12
32
23
56
76
45
Bentukumum:
<tipedata>NamaArray[indeks_1][indeks_2];
Indeks_1:menyatakanjumlahbaris
Indeks_2:menyatakanjumlahkolom
Contoh:
Tabeldiatasdapatdituliskankedalamarraydimensi2sebagaiberikut:
Intdata_jual[3][7];
boolpapan[2][2]={{true,false},{true,false}};
Elemenarrayduadimensidiaksesdenganmenuliskankeduaindekselemennyadalam
kurungsikusepertipadacontohberikut:
//papannamamemiliki2barisdan5kolom
boolpapan[2][5];
papan[0][0]=true;
papan[0][4]=false;
papan[1][2]=true;
papan[1][4]=false;
StrukturData
UniversitasPamulang
TeknikInformatika
24
CONTOH:
//arraydimensidua
#include<iostream>
#include<iomanip.h>
Usingnamespacestd;
Voidmain()
{
Inti,j;
Intdata_jual[4][4];
for(i=1;i<=3;i++)
{
for(j=1;j<=3;j++)
{
cout<<Datake<<i<<,<<j<<endl;
cout<<JumlahPenjualan:;
cin>>data_jual[i][j];
}
}
cout<<NO
200120022003<<endl;
cout<<<<endl;
for(i=1;i<=3;i++)
{
cout<<setiosflags(ios::left)<<setw(5)<<i;
for(j=1;j<=3;j++)
{
cout<<setiosflags(ios::right)<<setw(4)<<i;
cout<<data_jual[i][j];
cout<<;
}
cout<<endl;
}
cout<<<<endl;
getchar();
Output?
TUGAS:
1. ketikdanjalankan
2. Jelaskandanberikankesimpulan
StrukturData
UniversitasPamulang
TeknikInformatika
25
PERTEMUANVII
POINTER
Pointermerupakantipedataberukuran32bityangberisisatunilaiyangberpadanandengan
alamat memori tertentu. Sebagai contoh, sebuah variabel P bertipe pointer bernilai
0x0041FF2A, berarti P menunjuk pada alamat memori 0041FF2A. Pointer dideklarasikan
seperti variabel biasa dengan menambahkan tanda * (asterik) yang mengawali nama
variabel.
BentukUmum:
<tipedata>namaVariabel;
Contoh:
float*px;
ContohProgram1
#include<iostream>
usingnamespacestd;
voidmain()
{
Intx;
Int*px;
X=2;
px=&x//membacaalamatdarix
cout<<Nilaix.:<<x<<endl;
cout<<Nilai*px.:<<x<<endl;
cout<<Nilaipx(alamatx)..:<<px<<endl;
}
StrukturData
UniversitasPamulang
TeknikInformatika
26
KELUARANNYA:
Program2.
#include<iostream>
usingnamespacestd;
voidmain()
{
Intx[10]={0,1,2,3,4,5,6,7,8,9}
Int*px;
Inti;
for(i=0;i<10;i++)
{
px=&x[i];//membacaalamatdarix
cout<<x[i]<<<<*px<<<<px<<endl;
}
}
Outputnya:
Program3.
#include<iostream>
usingnamespacestd;
Outputnya
SelamatdatangMuhammadFachrurrozi
StrukturData
UniversitasPamulang
TeknikInformatika
27
TUGAS:
1. Tentukan ukuran masing masing tipe data dasar ( int, unsigned int, float, double,
long,char,bool)danberikancontohprogramnya.
2. Tulisalamatmasingmasingvariabelyangandagunakandalampraktikum
StrukturData
UniversitasPamulang
TeknikInformatika
28
PERTEMUANVIII
Struktur
TEORI
Structure (struktur) adalah kumpulan elemenelemen data yang digabungkan menjadi satu
kesatuan. Masingmasing elemen data tersebut dikenal dengan sebutan field. Field data
tersebutdapatmemilikitipedatayangsamaataupunberbeda.Walaupunfieldfieldtersebut
berada dalam satu kesatuan, masingmasing field tersebut tetap dapat diakses secara
individual.
Fieldfield tersebut digabungkan menjadi satu dengan tujuan untuk kemudahan dalam
operasinya. Misalnya Anda ingin mencatat datadata mahasiswa dan pelajardalamsebuah
program, Untuk membedakannya Anda dapat membuat sebuah record mahasiswa yang
terdiridarifieldnim,nama,alamatdanipksertasebuahrecordpelajaryangterdiridarifield
field nama, nonurut, alamat dan jumnilai. Dengan demikian akan lebih mudah untuk
membedakankeduanya.
Bentukumum:
typedefstructnama_struct
{
tipe_data<nama_var>;
tipe_data<nama_var>;
....
};
DEKLARASI
Ada2carapendeklarasianstruct,yaitu:
Deklarasi1:
typedefstructMahasiswa
{
charNIM[8];
charnama[50];
floatipk;
};
Deklarasi2:
struct
{
charNIM[8];
charnama[50];
floatipk;
}mhs;
StrukturData
UniversitasPamulang
TeknikInformatika
29
ARRAYOFSTRUCT
Apabilahendakmenggunakansatustructuntukbeberapakali,ada2cara:
1. Deklarasimanual
#include<stdio.h>
typedefstructMahasiswa
{
charNIM[8];
charnama[50];
floatipk;
};
voidmain()
{
Mahasiswaa,b,c;
}
artinyastructmahasiswadigunakanuntuk3variabel,yaitua,b,c
2.Arrayofstruct
#include<stdio.h>
typedefstructMahasiswa
{
charNIM[8];
charnama[50];
floatipk;
};
voidmain()
{
Mahasiswamhs[3];
artinyastructmahasiswadigunakanuntukmhs[0],mhs[1],danmhs[2]
Aksesdata.
Untukmenggunakanstruktur,tulisnamastrukturbesertadenganfieldnyayangdipisahkan
dengantandatitik(.).MisalnyaAndainginmenulisnimseorangmahasiswakelayarmaka
penulisanyangbenaradalahsebagaiberikut:
StrukturData
UniversitasPamulang
TeknikInformatika
30
JikaPmhsadalahpointerbertipemahasiswa*makafielddariPmhsdapatdiaksesdengan
menggantitandatitikdengantandapanah()
Contoh
/*MengisiBiodatadanNilaiIPKmahasiswa*/
#include<iostream>
Usingnamespacestd;
Keluarannya
TUGAS
1. Buat struct untuk data buku yang berisi tentang : kode buku, nama buku, tahun
terbit,pengarang,danharga.Gunakanarrayofstruct
2. Buatprogrammenghitungdurasirentalwarnet,denganketentuanperhitungannya:
30detik=Rp.130,Satuanwaktu:jam:menit:detik
StrukturData
UniversitasPamulang
TeknikInformatika
31
PERTEMUANIX(STACK)
TUJUAN
Agarmahasiswamemahamimetodepengolahandatamenggunakanmetodestack
Mahasiswamampumengurutkandatamenggunakanmetodepengolahanstack
TEORI:
StackadalahsuatutumpukanDATA.KonseputamanyaadalahLIFO(LastInFirstOut),DATA
yangterakhirmasukdalamstackakanmenjadiDATApertamayangdikeluarkandaristack
Adaduajenisstackyaitusinglestackdandoublestack.
I.SingleStack/StackTunggal:satustackdalamsatuarray.
KONDISISTACK
Kosong:Top=1
BisaDiisi:Top<n1
Gambar1
AdaIsinya:Top>1
MasihBisaDiisi:Top<n1
Gambar2
Gambar3
Penuh:Top=n1
AdaIsinya:Top>n1
StrukturData
UniversitasPamulang
TeknikInformatika
32
Ada4macamkondisistack
KondisiStack
Ciri
Ilustrasi
Ganbar1.
Top=1
a Kosong
Top=n1 Gambar3
b Penuh
Top<n1 Gambar1.&2
c Bisadiisi(kebalikanpenuh)
Gambar2&3
Top>1
d AdaIsinya(kebalikankosong)
Proses:
a. AWAL(inisialisasi)
b. PUSH(Insert,Masuk,Simpan,Tulis)
c. POP(Delete,Keluar,Ambil,Baca/Hapus)
a. AlgoritmaPUSH
PeriksaapakanTop<n1
Jikaya,
o NaikanTopdengan1
o IsikandatakedalamelemenyangditunjukTop
Jikatidak,
o CetakkomentarStackPenuh
if(Top<n1)
{
S[++Top]=x;
}
else
Cout<<StackPenuh;
b. AlgoritmaPOP
PeriksaapakahTop>1
Jikaya,
o CopydatadarielemenygditunjukTopkesuatuvariabel
Jikatidak,
o CetakkomentarStackkosong
if(Top>1)
{
x=S[Top];
}
else
StrukturData
UniversitasPamulang
TeknikInformatika
33
Cout<<StackKosong;
Contoh1.
//Programmengurutkandatamenggunakanmetodestack.
#include<iostream>
#include<conio.h>
usingnamespacestd;
voidmain()
{
intSA[20],SB[20],X,I,TOPA,TOPB;
TOPA=1;TOPB=1;
cin>>X;
TOPA++;SA[TOPA]=X;
for(I=1;I<=9;I++)
{
cin>>X;
while(TOPA>1&&SA[TOPA]>X)
{
TOPB++;
SB[TOPB]=SA[TOPA];
TOPA;
}
TOPA++
SA[TOPA]=X;
While(TOPB>1)
{
TOPA++;
SA[TOPA]=SB[TOPB];
TOPB;
}
for(I=1;I<=9;I++)
{
Cout<<SA[I];
}
}
TUGAS:
1. Jelaskandanbuatkesimpulantentangpengolahandatamenggunakanmetodestack
tersebutdiatas
2. Buatlahprogramyangakanmengisidanmenjumlahkanseluruhisistack.
StrukturData
UniversitasPamulang
TeknikInformatika
34
PERTEMUANX(DOUBLESTACK).
2.DoubleStack
Duastackdalamsatuarray
Dasarstack1beradapadaindexterkecil
Dasarstack2beradapadaindexterbesar
Ilustrasi:
Proses:
a)
b)
c)
d)
e)
AWAL(Inisialisasi)
PUSH1,Pushuntukstack1
POP1,Popuntukstack1
PUSH2,Pushuntukstack2
POP2,Popuntukstack2
a. FungsidasarprosesAWAL:
voidAWAL(void)
{
Top1=1;
Top2=n;
}
b. FungsidasarprosesPUSH1:
voidPUSH1(void)
{
S[++Top1]=x;
}
c. FungsidasarprosesPOP1:
voidPOP1(void)
{
x=S[Top1];
}
StrukturData
UniversitasPamulang
TeknikInformatika
35
d. FungsidasarprosesPUSH2:
voidPUSH2(void)
{
S[Top2]=x;
}
e. FungsidasarprosesPOP2:
voidPOP2(void)
{
x=S[Top2++];
}
KondisiStack
KondisiStack
Ciri
1 Stack1kosong
Top1=1
2 Stack2kosong
Top2=n
3 StackPenuh
Top2Top1=1
4 Stackbisadiisi
Top2Top1>1
5 Stack1adaisinya
Top1>1
6 Stack2adaisinya
Top2<n
a) AlgoritmalengkapprosesPUSH1:
PeriksaapakahTop2Top1>1,
a. jikaya:
o NaikanTop1dengan1
o IsikandatakedalamelemenyangditunjukolehTop1
b. Jikatidak
o CetakkomentarStackPenuh
voidPUSH1(void)
{
if(Top2Top1>1)
S[++Top1]=x;
else
cout<<StackPenuh;
}
b)AlgoritmalengkapprosesPOP1:
PeriksaapakahTop1>1,
Jikaya,
o CopydatadarielemenyangditunjukTop1
o TurunkanTop1
Jikatidak,
o CetakkomentarStackKosong
StrukturData
UniversitasPamulang
TeknikInformatika
36
voidPOP1(void)
{
if(Top1>1)
x=S[Top1];
else
cout<<StackKosong;
}
c)AlgoritmalengkapprosesPUSH2:
PeriksaapakahTop2Top1>1,
c. jikaya:
i. TurunkanTop2dengan1
ii. IsikandatakedalamelemenyangditunjukolehTop2
d. Jikatidak
i. CetakkomentarStackPenuh
voidPUSH2(void)
{
if(Top2Top1>1)
S[Top2]=x;
else
cout<<StackPenuh;
}
d)AlgoritmalengkapprosesPOP2:
PeriksaapakahTop2<n,
Jikaya,
o CopydatadarielemenyangditunjukTop2
o NaikanTop2
Jikatidak,
o CetakkomentarStackKosong
voidPOP2(void)
{
if(Top2<n)
x=S[Top2++];
else
cout<<StackKosong;
}
Soal:
1. Susunlahprogramuntukmenginputdatadarikeyboardterusmenerushinggastack1
penuh
2. Susunlahprogramuntukmenginputdatadarikeyboardterusmenerushinggastack2
penuh
3. Susunlahprogramuntukmenghapusstack1hinggakosong
4. Susunlahprogramuntukmenghapusstack2hinggakosong
StrukturData
UniversitasPamulang
TeknikInformatika
37
PERTEMUANXI
Queue(Antrian)
TUJUAN:
Agarmahasiswamampumemahamikonseppengolahandatadenganmenggunakan
metodeantrianlinear
TEORI:
Jikadiartikansecaraharfiah,queueberartiantrian,queuemerupakansalahsatucontoh
aplikasidaripembuatandoublelinkedlistyangcukupseringkitatemuidalamkehiduypan
seharihari,misalnyasaatAndamengantridiloketuntukmembelitiket.Istilahyangcukup
seringdipakaiseseorangmasukdalamsebuahantrianadalahenqueue.Dalamsuatuantrian,
yangdatingterlebihdahuluakandilayanilebihdahulu.Istilahyangseringdipakaibila
seseorangkeluardariantrianadalahdequeue.Walaupunberbedaimplementasi,struktur
dataqueuesetidaknyaharusmemilikioperasioperasisebagaiberikut:
Queuemenggunakanarray1D:
1. LinearQueue(AntrianLurus)
2. CircularQueue(AntrianMelingkar)
3. DoubleEndedQueue/Deque(Antriandenganujungganda)
A.ANTRIENLINEAR.
I.Ilustrasi
Misaln=10
F(Front):menunjukpengantripalingdepan/siapuntukkeluar/siapuntukdilayani
R(Rear):menunjukpengantripalingbelakang/palingakhirmasuk
R=6,artinya:
Pernahmasuk7pengantridenganurutanmasukQ[0],Q[1],Q[2],Q[3],Q[4],
Q[5],Q[6]
F=3,artinya:
Sudahkeluarsebanyak3pengantridenganurutankeluarQ[0],Q[1],Q[2]
II.Prinsip:FIFO(FirstInFirstOut)atau
III.Proses:
AWAL(Inisialisasi)
INSERT(Sisip,Masuk,Simpan,Tulis)
DELETE(Hapus,Keluar,Ambil,Dilayani)
RESET(Kembalikekeadaanawal)
StrukturData
UniversitasPamulang
TeknikInformatika
38
a) FungsidasaruntukprosesAWAL:
voidAWAL(void)
{
F=0;
R=1;
}
b) FungsidasarprosesINSERT:
voidINSERT(void)
{
if(R<n1)
Q[++R]=x;
else
cout<<Antrianpenuh;
}
c) FungsidasarprosesDELETE
voidDELETE(void)
{
if(F<R+1)
{
x=Q[F++];
if(F==n)
{
F=0;
R=1;
}
}
else
cout<<Antriankosong;
}
d) FungsidasarprosesRESET:
voidRESET(void)
{
F=0;
R=1;
}
StrukturData
UniversitasPamulang
TeknikInformatika
39
IV.Kondisiantrian(n:jmlelemenarray)
1. Kondisiawal
a. F=0,R=1kondisiawal
b. F=R+1antriankosong
c. R<n1antrianbisadiisi
2. Misalmasuk1pengantri,belumadayangkeluar
a. F=0belumadayangkeluar
b. F<R+1antrianadaisinya
c. R<n1antrianbisadiisi
3. Misalmasuklagi5pengantri,belumadayangkeluar
a. R=5sudahpernahmasuk6
b. F=0belumadayangkeluar
c. F<R+1antrianadaisinya
d. R<n1antrianbisadiisi
4. Misalkeluar5pengantri
a. F=5sudahkeluar5pengantri
b. F=Rtinggal1pengantri
c. F<R+1antrianadaisinya
d. R<n1antrianbisadiisi
5. Misalkeluarlagisatupengantri
a. F=6sudahkeluar6pengantri
b. R=5
c. F=R+1antriankosong
d. R<n+1antrianbisadiisi
6. Misalmasuklagi3pengantri
a. F<R+1antrianadaisinya
b. R<n1antrianmasihbisadiisi
StrukturData
UniversitasPamulang
TeknikInformatika
40
7. Misalmasuklagi1pengantri
a. F<R+1antrianadaisinya
b. R=n1antrianpenuh
8. Misalkeluar3pengantri
a. F<R+1antrianadaisinya
b. F=Rantriansisa1pengantri
c. R=n1antrianpenuh
9. Misalkankeluar1pengantri
a. F=nsemuaantriansudahkeluar
b. F=R+1antriankosong
c. R=n1antrianpenuh(disebutpenuh)
d. F=R+1danR=n1kondisikhusus:
Kosongkarenatidakadaisinya
Penuhkarenatidakbisadiisi
Perludireset(kembalikeposisiawal)
10. Kondisikhususlainnya:
a. Antrianpenuhtapibelumadayangkeluar
i. F=0belumadayangkeluar
ii. R=n1antrianpenuh
Kondisiantrian:
Kondisi
a
Kosong
b
Penuh
c
Bisadiisi
d
Adaisinya
e
Perludireset
Ciri
F=R+1dimanasaja
R=n1
R<n1
F<R+1
F=R+1danR=n1
StrukturData
UniversitasPamulang
TeknikInformatika
41
Soal
1. Buatlah suatu program Animasi Antrian dengan 4 buah pilihan : INSERT, DELETE, CETAK
ANTRIAN,QUIT.
JikadipilihINSERT:programakanmemintauseruntukmenginputsebuahkarakteryang
akandimasukankedalamantrian
JikadipilihDELETE:makakarakterpertamamasukakandikeluarkandariantrian
JikadipilihCETAKANTRIAN:komputermenampilkankarakteryangadapadaantrian
JikadipilihQUIT:programkeluar
StrukturData
UniversitasPamulang
TeknikInformatika
42
PERTEMUANX
B.CicularQueue(AntrianMelingkar)
TUJUAN:
Agarmahasiswamampumemahamikonseppengolahandatadenganmenggunakan
metodeantrianmelingkar.
Mahasiswamampumembedakankonseppengolahandatamenggunakanmetode
antrianlineardanmetodeantrianmelingkar.
TEORI:
I.Representasi
Misaln=10
atau
Counter:Jumlahpengantriyangadadalamantrian
Ftidakselalu<=R
SetelahRdanFsampaiken1,makatidakdiresettetapimelingkarke0.
II.Prinsip:FIFO(FirstInFirstOut)
III.Proses:
AWAL(Inisialisasi)
INSERT(Sisip,Masuk,Simpan,Tulis)
DELETE(Hapus,Keluar,Ambil,Dilayani)
a) FungsidasaruntukprosesAWAL:
voidAWAL(void)
{
F=0;
R=1;
COUNTER=0
}
b) FungsidasarprosesINSERT:
voidINSERT(void)
voidINSERT(void)
{
{
if(COUNTER<n)
R=(R+1)%n;
{
Q[R]=x;
R=(R+1)%n;
COUNTER++;
Q[R]=x;
}
StrukturData
UniversitasPamulang
TeknikInformatika
43
COUNTER++;
}
else
cout<<Antrianpenuh;
}
c) FungsidasarprosesDELETE:
voidDELETE(void)
voidDELETE(void)
{
{
if(COUNTER>0)
x=Q[F];
{
F=(F+1)%n;
x=Q[F];
COUNTER;
F=(F+1)%n;
}
COUNTER;
}
else
cout<<Antriankosong;
}
IV.Kondisiantrian(n:jmlelemenarray).
Beberapakondisiantrianal:
1. Kondisiawal
d. F=0,R=1,COUNTER=0kondisiawal
e. COUNTER=0Antriankosong
2. Misalmasuk1pengantri,belumadayangkeluar
a. COUNTER>0adaisinya
b. F=Risinyahanya1
c. Counter<nmasihbisadiisi
3. Misalmasuklagi3pengantri,belumadayangkeluar
a. COUNTER>0adaisinya
b. F<>R+1adaisinya
c. COUNTER<nmasihbisadiisi
StrukturData
UniversitasPamulang
TeknikInformatika
44
4. Misalkeluar1pengantri
a. COUNTER>0adaisinya
b. F<>R+1adaisinya
c. COUNTER<nbisadiisi
5. Misalmasuklagi3pengantri
a. COUNTER>0adaisinya
b. F<>R+1adaisinya
c. COUNTER<nbisadiisi
6. Misalkeluar2pengantri
a. COUNTER>0adaisinya
b. R<>R+1adaisinya
c. COUNTER<nbisadiisi
7. Misalkeluarlagi3pengantri
a. COUNTER>0adaisinya
b. F=Rhanya1pengantri
c. COUNTER<nbisadiisi
8. Misalkeluarlagi1pengantri
StrukturData
UniversitasPamulang
TeknikInformatika
45
a. COUNTER=0antriankosong
b. COUNTER<nbisadiisi
9. Misalkanmasuklagi3pengantri
a. COUNTER>0adaisinya
b. COUNTER<nbisadiisi
10. Misalmasuklagi4pengantri
a. COUNTER>0adaisinya
b. COUNTER<nbisadiisi
11. Misalmasuklagi2pengantri
a) COUNTER>0adaisinya
b) F<>R+1adaisinya
c) COUNTER<nbisadiisi
12. Misalmasuklagi1pengantri
a) COUNTER>0adaisinya
b) COUNTER=nantrianpenuh
Kondisiantrian:
Kondisi
a Kosong
b Penuh
c Bisadiisi
StrukturData
Ciri
COUNTER=0
COUNTER=n
COUNTER<n
UniversitasPamulang
TeknikInformatika
46
Adaisinya
COUNTER>0
TUGAS:
BuatlahsuatuprogramAnimasiAntrianMelingkardengan4buahpilihan:INSERT,DELETE,
CETAKANTRIAN,QUIT.
Jika dipilih INSERT : program akan meminta user untuk menginput sebuah karakter yang
akandimasukankedalamantrian
JikadipilihDELETE:makakarakterpertamamasukakandikeluarkandariantrian
JikadipilihCETAKANTRIAN:komputermenampilkankarakteryangadapadaantrian
JikadipilihQUIT:programkeluar
StrukturData
UniversitasPamulang
TeknikInformatika
47
PERTEMUAN11.
C.DoubleEndedQueue
I.Representasi
Misaln=10
InsertKiri:masukdaripintukiri
InsertKanan:masukdaripintukanan
DeleteKiri:keluardaripintukiri
DeleteKanan:keluardaripintukanan
II.Prinsip:Keluarmasukdarikeduaujung
III.Proses:
AWAL(Inisialisasi)
INSERT(Sisip,Masuk,Simpan,Tulis)
DELETE(Hapus,Keluar,Ambil,Dilayani)
e) FungsidasaruntukprosesAWAL:
voidAWAL(void)
{
L=0;
R=1;
}
f) FungsidasarprosesINSERTKIRI:
voidINSERT_KIRI(void)
{
Q[L]=x;
}
g) FungsidasarprosesINSERTKANAN:
voidINSERT_KANAN(void)
{
Q[++R]=x;
}
h) FungsidasarprosesDELETEKIRI:
voidDELETE_KIRI(void)
{
x=Q[L++];
}
StrukturData
UniversitasPamulang
TeknikInformatika
48
i) FungsidasarprosesDELETEKANAN:
voidDELETE_KANAN(void)
{
x=Q[R];
}
IV.Kondisiantrian(n:jmlelemenarray).
1. Kondisiawal
L=0,R=1kondisiawal
L=R1Antriankosong
L=0Penuhkiri
R<n1Bisainsertkanan
2. Misalmasuk1pengantridarikanan
L<R+1adaisinya
L=0penuhkiri
R<n1bisainsertkanan
3. Misalmasuklagi3pengantridarikanan
L<R+1adaisinya
L=0penuhkiri
R<n1bisainsertkanan
4. Misalkeluar1pengantridarikiri
L<R+1adaisinya
L>0bisainsertkiri
R<n1bisainsertkanan
StrukturData
UniversitasPamulang
TeknikInformatika
49
5. Misalmasuklagi3pengantridarikanan
L<R+1adaisinya
L>0bisainsertkiri
R<n1bisainsertkanan
6. Misalkeluar5pengantrimelaluikiri
L<R+1adaisinya
L>0bisainsertkiri
R<n1bisainsertkanan
L=Rhanya1pengantri
7. Misalkeluar1pengantrimelaluikiri
L=R+1adaisinya
L>0bisainsertkiri
R<n1bisainsertkanan
8. Misalmasuk4pengantridarikiri
L<R+1adaisinya
L>0bisainsertkiri
R<n1bisainsertkanan
9. Misalkanmasuklagi2pengantridarikanan
L<R+1adaisinya
L>0bisainsertkanan
R<n1bisainsertkanan
10. Misalmasuklagi1pengantridarikanan
L<R+1adaisinya
L>0bisainsertkiri
R=n1penuhkanan
StrukturData
UniversitasPamulang
TeknikInformatika
50
11. Misalmasuklagi3pengantridarikiri
L<R+1adaisinya
L=0penuhkiri
R=n1penuhkanan
12. Misalseluruhpengantrikeluardarikiri
L=R+1antriankosong
L>0bisainsertkiri
R=n1penuhkanan
Kondisiantrian:
Kondisi
Ciri
a
Kosong
L=R+1
b
Penuhkiri
L=0
c
Penuhkanan
R=n1
d
Bisadiisidarikiri
L>0
e
Bisidiisidarikanan
R<n 1
f
Adaisinya
L<R+1
V.Fungsilengkap
a) INSERTKIRIlengkap
voidINSERT_KIRI(void)
{
if(L>0)
{
Q[L]=x;
}
else
cout<<Antrianpenuhkiri;
}
StrukturData
UniversitasPamulang
TeknikInformatika
51
b) INSERTKANANlengkap
voidINSERT_KANAN(void)
{
if(R<n1)
{
Q[++R]=x;
}
else
cout<<Antrianpenuhkanan;
}
c) DELETEKIRIlengkap
voidDELETE_KIRI(void)
{
if(L<R+1)
{
x=Q[L++];
}
else
cout<<Antriankosong;
}
d) DELETEKANANlengkap
voidDELETE_KANAN(void)
{
if(L<R+1)
{
x=Q[R];
}
else
cout<<Antriankosong;
}
Soal
1.BuatlahsuatuprogramAnimasiDoubleEndedQueuedengan6buahpilihan:INSERTKIRI,
INSERTKANAN,DELETEKIRI,DELETEKANAN,CETAKANTRIAN,QUIT.
StrukturData
UniversitasPamulang
TeknikInformatika
52
PERTEMUANXII.(LingkedList)
TUJUAN:
- Agarmahasiswamemahamikonseppenambahandatapadapengolahandata
menggunakanLingkedList
TEORI
Link List: sejumlah obyek yang dilink/dihubungkan satu dengan lainnya. Obyek : gabungan
bebErapa elemen data yg dijadikan satu kelompok/struktur/record Untuk menghubungkan
antar obyek perlu variabel tipe pointer yg merupakan salah satu variabel dalam struktur
obyek.
Ada4macamstrukturlinkedlist:
1.LinearSinglyLinkedList
2.LinearDoubleLinkedList
3.CircularSingleLinkedlist
4.CircularDoublelinkedList
1.LinearSinglyLinkedList:Linklistlurusdenganpointertunggal
I.Ilustrasi
Ada4simpul:1,2,3,4
Setiapsimpulterdiridari2elemen/field,yaitu:
o INFO:bertipeinteger
o LINK:bertipepointer
Simpulno.1:
o FieldINFOberisi10
o FieldLINKberisialamatsimpulno.2
Simpulno.1ditunjukolehpointerFIRST
Simpulno.4ditunjukolehpointerLAST
Ilustrasisebuahsimpul:
StrukturData
UniversitasPamulang
TeknikInformatika
53
Untukmempersiapkansebuahlinkedlistmakaharusdideklarasikansebagaiberikut:
structSIMPUL
{
intINFO;
structSIMPUL*LINK;
};
SIMPUL*P,*Q,*FIRST,*LAST;
II.Proses
a. Inisialisasi:persiapanpembuatanlinkedlist
b. Membuatsimpulawal
c. Insertsimpulkedalamlinkedlist
d. Deletesimpuldarilinkedlist
II.1.Inisialisasi
FIRST=NULL;
LAST=NULL;
II.2.Pembuatansimpul
Instruksiuntukmembuatsebuahsimpul:P=(SIMPUL*)malloc(sizeof(SIMPUL));
Fungsiuntukmembuatsimpul:
voidBUAT_SIMPUL(intX)
{
P=(SIMPUL*)malloc(sizeof(SIMPUL));
if(P!=NULL)
{
P>INFO=X;
}
else
cout<<Pembuatansimpulgagal;
}
Contoh:
voidBUAT_SIMPUL(intx)
#include<iostream>
{
#include<stdlib.h>
P=(SIMPUL*)malloc(sizeof(SIMPUL));
structSIMPUL{
if(P!=NULL)
intINFO;
P>INFO=x;
structSIMPUL*LINK;
else
};
cout<<"PembuatanSimpul
SIMPUL*P,*FIRST,*LAST;
Gagal"<<endl;
voidBUAT_SIMPUL(int);
}
usingnamespacestd;
voidmain(void)
{
StrukturData
UniversitasPamulang
TeknikInformatika
54
intx;
cout<<"MasukanData:";cin>>x;
BUAT_SIMPUL(x);
cout<<"Data:"<<P>INFO<<endl;
}
II.3.Pembuatansimpulawal
Menjadikansebuahsimpulmenjadisimpulawaldarisebuahlinkedlist.Simpulawalditunjuk
olehpointerFIRST.
Fungsi:
VoidAWAL(void)
{
if(FIRST==NULL)
{
FIRST=P;
LAST=P;
P>LINK=NULL;
}
else
cout<<LinkedListsudahada<<endl;
}
Ilustrasi:
Sudahdibuatsimpulsbb:
FIRST=P
LAST=Patau
LAST=FIRST
P>LINK=NULLatau
FIRST>LINK=NULLatau
LAST>LINK=NULL
II.4.InsertKanan
Menyisipkansebuahsimpulbarupadaujungkananlinkedlist.
Proses:
- sudahadalinkedlist
- buatsimpulbaru
- sisipkansimpulbarutsbdiujungkananlinkedlist
StrukturData
UniversitasPamulang
TeknikInformatika
55
Fungsi:
voidINSERT_KANAN(void)
{
if(LAST!=NULL)
{
LAST>LINK=P;
LAST=P;
P>LINK=NULL;
}
else
cout<<LinkedListbelumada;
}
Ilustrasi:
Sudahadalinkedlist
Buatsimpulbaru
P=(SIMPUL*)malloc(sizeof(SIMPUL));
LAST>LINK=Patau
FIRST>LINK=P
LAST=Patau
LAST=FIRST>LINK
P>LINK=NULLatau
LAST>LINK=NULLatau
FIRST>LINK>LINK=NULL
II.5.InsertKiri
Menyisipkansebuahsimpulbarupadaujungkirilinkedlist.
Proses:
- sudahadalinkedlist
- buatsimpulbaru
- sisipkansimpulbarutsbdiujungkirilinkedlist
Fungsi:
voidINSERT_KIRI(void)
{
if(FIRST!=NULL)
{
P>LINK=FIRST;
FIRST=P;
}
StrukturData
UniversitasPamulang
TeknikInformatika
56
else
cout<<LinkedListbelumada;
}
Ilustrasi:
Sudahadalinkedlist
Buatsimpulbaru
P=(SIMPUL*)malloc(sizeof(SIMPUL));
P>LINK=FIRSTatau
P>LINK=LAST
FIRST=P
II.6.InsertTengah
Menyisipkansebuahsimpulantaraduabuahsimpulpadalinkedlist.
setelahdiinsertmenjadi:
Syarat:simpulno.7harussudahditunjukolehpointerQ,caranya:
Q=FIRST;
For(i=1;i<=6;i++)
Q=Q>LINK;
Fungsi:
VoidINSERT_TENGAH(void)
{
P>LINK=Q>LINK;
Q>LINK=P;
}
StrukturData
UniversitasPamulang
TeknikInformatika
57
TUGAS
BuatprogramanimasiLinearSinglyLinkedListuntukmengeloladatamahasiswadengan
strukturmahasiswasbb:NAMA,NIM,GENDER,NILAISTRUKTURDATA.Programdibuat
dalambentukmenudenganpilihan:INSERTDATA,,CETAKDATA,EXIT.
Ket:
INSERDATA:menyisipkansatusimpulpadaakhirlinkedlist
CETAKDATA:mencetakseluruhisilinkedlist
EXIT:Keluar/selesai
Tampilanmenu:
LIN.SINGLYLINKEDLIST
==========================
1. INSERTDATA
2. CETAKDATA
3. EXIT
Pilihan(13):
StrukturData
UniversitasPamulang
TeknikInformatika
58
PERTEMUANXIII
LanjutanLingkedList
(DELETE)
TUJUAN:
- Agarmahasiswamemahamikonsepdeletepadapengolahandatamenggunakan
LingkedList
TEORI
Link List: sejumlah obyek yang dilink/dihubungkan satu dengan lainnya. Obyek : gabungan
bebrapaelemen data yg dijadikan satu kelompok/struktur/record Untuk menghubungkan
antar obyek perlu variabel tipe pointer yg merupakan salah satu variabel dalam struktur
obyek.
II.7.DeleteKanan/Akhir
Menghapussimpulyangadapadalinkedlistpalingakhir/kanan.
Ilustrasi:sudahadasebuahlinkedlist
akandihapussimpulterakhirmenjadi:
Syaratagarsimpulno.8dapatdihapusadalahsimpulno.7sudahditunjukolehpointerQ.
Caranya:
Q=FIRST;
while(Q>LINK!=LAST)
Q=Q>LINK;
Fungsi:
voidDELETE_KANAN(void)
{
free(LAST);
LAST=Q;
LAST>LINK=NULL;
}
Ilustrasi:
Sudahadalinkedlist
StrukturData
UniversitasPamulang
TeknikInformatika
59
free(LAST)
LAST=Q
LAST>LINK=NULL
II.8.DeleteKiri/Awal
Menghapussimpulyangadapadalinkedlistpalingawal/kiri.
Ilustrasi:sudahadasebuahlinkedlist
akandihapussimpulawalmenjadi:
Fungsi:
voidDELETE_KIRI(void)
{
Q=FIRST;
FIRST=Q>LINK;
free(Q);
}
Ilustrasi:
Sudahadalinkedlist
Q=FIRST
FIRST=Q>LINK
StrukturData
UniversitasPamulang
TeknikInformatika
60
free(Q)
Tuliskancaralain!
Tip:TempatkanQpadasimpulkedua,hapussimpulpertama,pindahkanFIRSTkesimpul
kedua.
II.9.DeleteTengah
Menghapussimpulyangadadiantaraduasimpullain.
Ilustrasi:sudahadalinkedlist
simpulno.7akandihapussehinggamenjadi:
Syaratagarsimpulno.7bisadihapusmakasimpulno.6harussudahditunjukolehQ.
Caranya:
Q=FIRST;
For(I=1;I<=5;I++)
Q=Q>LINK;
Fungsi:
voidDELETE_TENGAH(void)
{
R=Q>LINK;
Q>LINK=R>LINK;
free(R);
}
Ilustrasi:
Sudahadalinkedlist
R=Q>LINK
Q>LINK=R>LINK
free(R)
StrukturData
UniversitasPamulang
TeknikInformatika
61
TUGAS:
BuatprogramanimasiLinearSinglyLinkedListuntukmengeloladatamahasiswadengan
strukturmahasiswasbb:NAMA,NIM,GENDER,NILAISTRUKTURDATA.Programdibuat
dalambentukmenudenganpilihan:INSERTDATA,HAPUSDATA,CETAKDATA,EXIT.
Ket:
INSERDATA:menyisipkansatusimpulpadaakhirlinkedlist
HAPUSDATA:menghapussatusimpulpadaakhirlinkedlist
CETAKDATA:mencetakseluruhisilinkedlist
EXIT:Keluar/selesai
Tampilanmenu:
LIN.SINGLYLINKEDLIST
==========================
1. INSERTDATA
2. HAPUSDATA
3. CETAKDATA
4. EXIT
Pilihan(14):
StrukturData
UniversitasPamulang
TeknikInformatika
62
PERTEMUANXIV
AplikasiAntrianpadasinglelingkedlist
TUJUAN;
- Agar mahasiswa mampu mengaplikasikan dan memahami pengolahan data
lingkedlistyangdiperlakukansebagaiantrian.
TEORI:
Proses:FIFO
INSERT:selaluInsertKanan
DELETE:selaluDeleteKiri
BilaFRONT=REARartinyaantriantinggal1(simpulawal)
BilaFRONT=NULLartinyaantriankosong
Fungsifungsiyangdiperlukan:
1) Deklarasistruktursimpuldanpointerygdiperlukan
struckSIMPUL{
intINFO;
struckSIMPUL*LINK;
};
SIMPUL*P,*Q,*FRONT,*REAR;
2) Inisialisasi
FRONT=NULL;
REAR=NULL;
3) FungsipembuatanSimpulBaru
voidBUAT_SIMPUL(intX)
{
P=(SIMPUL*)malloc(sizeof(SIMPUL));
if(P!=NULL)
P>INFO=X;
else
StrukturData
UniversitasPamulang
TeknikInformatika
63
{
cout<<Membuatsimpulgagal;
exit(1);
}
}
4) FungsiINSERT(InsertKananatauBuatAwal)
voidINSERT(void)
{
if(FRONT==NULL)
{
FRONT=P;
REAR=P;
REAR>LINK=NULL;
}
else
{
REAR>LINK=P;
REAR=P;
REAR>LINK=NULL;
}
}
5) FungsiDELETE(DeleteKiri)
IntDELETE(void)
{
intX;
if(FRONT!=NULL)
{
X=FRONT>INFO;
Q=FRONT>LINK;
free(FRONT);
FRONT=Q;
return(X);
}
else
cout<<QueueKosong;
}
TUGAS:
BuatprogramanimasiQueuemenggunakanLinkedListtanpaHeaduntukmengeloladata
mahasiswadenganstrukturmahasiswasbb:NAMA,NIM,GENDER,NILAISTRUKTURDATA.
Programdibuatdalambentukmenudenganpilihan:INSERTDATA,HAPUSDATA,CETAK
DATA,EXIT.
StrukturData
UniversitasPamulang
TeknikInformatika
64
PERTEMUANXV
AplikasiStackpadalingkedlist
TUJUAN:
- Mahasiswamampumengaplikasikanteoristackuntukmenanganidatayang
berbentuklingkedlist.
TEORI:
IlustrasiuntukSTACKtanpamenggunakansimpulHead
PUSH:selaluinsertkiri
POP:selaludeletekiri
JikaTOP>LINK=NULLberartiisistacktinggalsatusimpul(simpulpertama)danbilasimpulini
dihapus(POP)makaTOPdibuatsamadenganNULL.
Fungsifungsiyangdiperlukan:
1) Deklarasistruktursimpuldanpointeryangdiperlukan
struckSIMPUL{
intINFO;
struckSIMPUL*LINK;
};
SIMPUL*P,*Q,*TOP;
2) Inisialisasistack
TOP=NULL
3) Fungsipembuatsimpulbaru
voidBUAT_SIMPUL(intX)
{
P=(SIMPUL*)malloc(sizeof(SIMPUL));
if(P!=NULL)
P>INFO=X;
else
StrukturData
UniversitasPamulang
TeknikInformatika
65
{
cout<<Membuatsimpulgagal;
exit(1);
}
}
4).FungsiPUSH(InsertKiriatauBuatAwal)
voidPUSh(void)
{
if(TOP==NULL)
{
TOP=P;
TOP>LINK=NULL;
}
else
{
P>LINK=TOP;
TOP=P;
}
}
1) Inisialisasistack
TOP=NULL
2) Fungsipembuatsimpulbaru
voidBUAT_SIMPUL(intX)
{
P=(SIMPUL*)malloc(sizeof(SIMPUL));
if(P!=NULL)
P>INFO=X;
else
{
cout<<Membuatsimpulgagal;
exit(1);
}
}
3) FungsiPUSH(InsertKiriatauBuatAwal)
voidPUSh(void)
{
if(TOP==NULL)
{
TOP=P;
TOP>LINK=NULL;
}
else
{
StrukturData
UniversitasPamulang
TeknikInformatika
66
P>LINK=TOP;
TOP=P;
}
}
1) FungsiPOP(DeleteKiri)
intPOP(void)
{
intX;
if(TOP!=NULL)
{
X=TOP>INFO;
Q=TOP>LINK;
free(TOP);
TOP=Q;
return(X);
}
else
cout<<Stackkosong;
}
TUGAS
BuatprogramanimasiStackmenggunakanLinkedListtanpaHeaduntukmengeloladata
mahasiswadenganstrukturmahasiswasbb:NAMA,NIM,GENDER,NILAISTRUKTURDATA.
Programdibuatdalambentukmenudenganpilihan:INSERTDATA,HAPUSDATA,CETAK
DATA,EXIT.
StrukturData
UniversitasPamulang
TeknikInformatika
67
PERTEMUANXVI(LinearDoubleLinkedList)
AdalahLinkedlurusdenganpointerganda,yaituadaduabuahpointer.Jadidalamstruktur
simpuladaduaelemenataufieldyangbertipepointer.Yangpertamamenunjukalamat
simpulsebelumnyadanyangkeduamenunjuksimpulberikutnya.
StrukturData
UniversitasPamulang
TeknikInformatika
68
PROSES
StrukturData
UniversitasPamulang
TeknikInformatika
69
StrukturData
UniversitasPamulang
TeknikInformatika
70
StrukturData
UniversitasPamulang
TeknikInformatika
71
INSERTKIRI
StrukturData
UniversitasPamulang
TeknikInformatika
72
INSERTTENGAH
StrukturData
UniversitasPamulang
TeknikInformatika
73
DELETEKANAN
StrukturData
UniversitasPamulang
TeknikInformatika
74
DELETEKIRI
StrukturData
UniversitasPamulang
TeknikInformatika
75
DELETETENGAH
DiasumsikanpointerQsudahmenunjukkesimpulno7
Buatlahfungsideletetengah
a. JikapointerQmenunjuksimpulnomer8
b. JikapointerQmenunjuksimpulnomer9
StrukturData
UniversitasPamulang
TeknikInformatika
76
PERTEMUANXVII
A.CircularSingleLinkedList
CircularSingleLinkedListadalahsinglyLinkedListdimanalinksimpulterakhirbukandiisi
dengan null, tetapi diisi dengan alamat simpul pertama yaitu simpul yang ditunjuk oleh
pointerFIRST,sehinggamenciptakanefekmelingkarsesuaiarahjarumjam.
Ilustrasi
PROSES
StrukturData
UniversitasPamulang
TeknikInformatika
77
B. CIRCULARDOUBLYLINKEDLIST.
StrukturData
UniversitasPamulang
TeknikInformatika
78
ILUSTRASI
PROSES
StrukturData
UniversitasPamulang
TeknikInformatika
79
StrukturData
UniversitasPamulang
TeknikInformatika
80
PERTEMUANXVIII
TREE(POHON)
StrukturData
UniversitasPamulang
TeknikInformatika
81
StrukturData
UniversitasPamulang
TeknikInformatika
82
StrukturData
UniversitasPamulang
TeknikInformatika
83
StrukturData
UniversitasPamulang
TeknikInformatika
84
StrukturData
UniversitasPamulang
TeknikInformatika
85
PERTEMUANXIX
POHONBINER
Pohonbinerdengankedalaman(depth)d=3
StrukturData
UniversitasPamulang
TeknikInformatika
86
StrukturData
UniversitasPamulang
TeknikInformatika
87
StrukturData
UniversitasPamulang
TeknikInformatika
88
PohonBinerSeimbang(BalancedBinaryTree)
StrukturData
UniversitasPamulang
TeknikInformatika
89
PERTEMUANXX
PenomoranSimpulPohonBiner
StrukturData
UniversitasPamulang
TeknikInformatika
90
ContohSoal
StrukturData
UniversitasPamulang
TeknikInformatika
91
StrukturData
UniversitasPamulang
TeknikInformatika
92
StrukturData
UniversitasPamulang
TeknikInformatika
93
PERTEMUANXXI
OPERASIPADAPOHONBINER
PROSESINISIALISASI
StrukturData
UniversitasPamulang
TeknikInformatika
94
PEMBUATANSEBUAHSIMPUL
Menjadikansebuahsimpulmenjadisebagaisimpulakar
Insertsebuahsimpul
Inserturutnomorsimpul,atauinserttlevelperlevel
Insertpadanomorsimpultertentu
StrukturData
UniversitasPamulang
TeknikInformatika
95
Inserturutnomorsimpul,atauinserttlevelperlevel
StrukturData
UniversitasPamulang
TeknikInformatika
96
StrukturData
UniversitasPamulang
TeknikInformatika
97
StrukturData
UniversitasPamulang
TeknikInformatika
98
StrukturData
UniversitasPamulang
TeknikInformatika
99
PERTEMUANXXII
StrukturData
UniversitasPamulang
TeknikInformatika
100
StrukturData
UniversitasPamulang
TeknikInformatika
101
StrukturData
UniversitasPamulang
TeknikInformatika
102
StrukturData
UniversitasPamulang
TeknikInformatika
103
StrukturData
UniversitasPamulang
TeknikInformatika
104
StrukturData
UniversitasPamulang
TeknikInformatika
105
StrukturData
UniversitasPamulang
TeknikInformatika
106
PERTEMUANXXIV
Searching(sequencialdanbinary.)
TUUAN
-
TEORI
Teknikpencariandatadariarrayyangpalingmudahadalahdengancarasequentialsearch,
dimanadatadalamarraydibaca1demisatu,diurutkandariindexterkecilkeindexterbesar,
maupunsebaliknya.
Contoh:
inta[5]={0,3,6,10,1}
jika kita ingin mencari bilangan 6 dalam array tersebut, maka proses yang terjadi kita
mencari
1. dariarrayindexke0,yaitu0,dicocokandenganbilanganyangakandicari,jikatidak
sama,makamencarikeindexberikutnya
2. padaarrayindexke1,jugabukanbilanganyangdicari,makakitamencarilagipada
indexberikutnya
3. pada array index ke2, ternyata bilangan yang kita cari ada ditemukan, maka kita
keluardariloopingpencarian
contoh:
#include<iostream>
using namespace std;
output:
Metodepencarianyangkeduaadalahbinarysearch,padametodepencarianini,dataharus
diurutkan terlebih dahulu. Pada metode pencarian ini, data dibagi menjadi dua bagian
(secaralogika),untuksetiaptahappencarian.
Algoritmabinarysearch:
StrukturData
UniversitasPamulang
TeknikInformatika
107
1. Datadiambildariposisi1sampaiposisiakhirN
2. Kemudiancariposisidatatengahdenganrumus:(posisiawal+posisiakhir)/2
3. Kemudiandatayangdicaridibandingkandengandatayangditengah,apakahsamaatau
lebihkecil,ataulebihbesar?
4. Jikalebihbesar,makaprosespencariandicaridenganposisiawaladalahposisitengah+
1
5. Jikalebihkecil,makaprosespencariandicaridenganposisiakhiradalahposisitengah1
6. Jikadatasama,berartiketemu.
Contohsourcebinarysearch:
#include<iostream>
usingnamespacestd;
Output:
TUGAS:
1. Buatlahsebuahprogramyangdapatmenerimainputandatakedalamsebuaharray.
2. Lanjutan dari nomor 1, gunakan sequensial search untuk mencari sebuah nilai dari
arraytersebut,dangantilahnilainya.
3. Cobagunakanmetodepencarianlainnya
4. Buatlahmenuuntukprogramtersebut(1.Sequentialsearch,2.BinarySearch,3.exit)
StrukturData
UniversitasPamulang
TeknikInformatika
108
CONTOHPROGRAM:
#include<iostream>
typedef enum (false=0, true=1) bool ;
using namespace std ;
StrukturData
UniversitasPamulang
TeknikInformatika
109
Output:
Atau;
StrukturData
UniversitasPamulang
TeknikInformatika