Anda di halaman 1dari 109

1

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

Kumpulan instruksi-instruksi yang ditulis dengan aturan tertentu yang

dimengerti oleh komputer untuk melaksanakan suatu tugas.

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;

Statement di atas mendeklarasikan variabel px yang merupakan pointer. Penyebutan tipe


data float berarti bahwa alamat memori yang ditunjuk oleh px dimaksudkan untuk berisi
databertipefloat.

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
-

Agar mahasiswa memahami beberapa metode pencarianmenggunakan metode


sequencialdanbinary.

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