Anda di halaman 1dari 22

JURNAL STRUKTUR DATA

DATA & STRUKTUR DATA

Lambas Perdana Naibaho 1, Maya Pangaribuan 2,

Kumara Bakti Sinaga 3, Kinanti Putri Lestari 4, Indra Gunawan, M. Kom 5

Mahasiswa S1 Struktur Data, Jurusan Teknik Informatika, SEKOLAH TINGGI ILMU


KOMPUTER STIKOM TUNAS BANGSA PEMATANGSIANTAR

Jln. Jend. Sudirman Blok A No. 1-3 Pematangsiantar - 21127

ABSTRAK

Struktur Data adalah cara penyimpanan dan pengorganisasian data-data pada memori
komputer maupun file secara efektif sehingga dapat digunakan secara efisien,termasuk operasi-
operasi di dalam nya.

Data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang
kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan,suara,
gambar, sinyal atau simbol.Pengertian data ini menyiratkan suatu nilai yang bisa dinyatakan
dalam bentuk konstanta / variable. Konstanta digunakan untuk menyatakan nilai tetap
sedangkan variable digunakan dalam program untuk menyatakan nilai yang dapat berubah-
ubah selang eksekusi berlangsung.
ABSTRACT

Data structure is a way of storing and organizing data in computer memory and files
effectively so that it can be used efficiently, including the operations in it.

Data is a representation of real world facts. Facts or information about facts that are
stored, recorded or represented in the form of writing, sound, pictures, signals or symbols. The
definition of this data implies a value that can be expressed in the form of a constant / variable.
Constants are used to express a fixed value, while variables are used in the program to represent
a value that can vary between execution.
PENDAHULUAN

Mata kuliah struktur data merupakan salah Struktur data adalah cara penyimpana,
satu mata kuliah yang di ajarkan pada penyusunan dan pengaturan data di dalam
banyak program studi ilmu komputer.Materi media penyimpanan komputer sehingga data
struktur data merupakan materi konsep- tersebut dapat digunakan secata efisien.
konsep abstrak, sehingga sulit di fahami
mahasiswa. Dalam istilah ilmu komputer,

Pemograman dalam struktur data ada atau Pascal namun perbedaan juga tidak
beberapa macam. Salah satu nya adalah begitu signifikan pada pemograman pasca .
pemograman C++. Dalam pemograman ini
biasanya menggunakan variabel ARRAY, Pemograman dalam struktur data ada
struktur dan linked list. beberapa macam. Salah satunyaadalah
pemograman C++. Dalam pemograman ini
Penelitian ini membahas tentang tiga biasanya menggunakan berbagaivariable
variabel tersebut dimana ketiga variabel misalnya Struktur data, pointer, Array,
mempunyai ciri dan umum yang berbeda Linked List, stack, queue, tree,pohon biner
sesuai dengan tipe file yang digunakan (binari tree) dan graph / matrik penjajian
pembaca. Seperti array yang menggunakan data. Jurnal ini akan membahas variabel
satu dimensi dan dua dimensi serta 3 tersebut dimana variable mempunyaiciri dan
dimensi dimana sangat berbeda dengan umum yang berbeda sesuai dengan tipe file
struktur yang di gunakan pembaca.Pemograman ini
merupakan pemograman yang berbeda dari
Yang menggunakan tingkatan pemograman lainnyamisalnya VB, Delphi
prosedur. Pemograman ini merupakan atau Pascal namun perbedaan juga tidak
pemograman yang berbeda dari begitu signifikanpada pemograman pascal
pemograman lainnya misalnya VB, Delphi

METODOLOGI PENELITIAN
Alat yang digunakan pada penelitian Bahan yang digunakan adalah
ini adalah laptop. aplikasi Dev C++.

HASIL DAN PEMBAHASAN


STRUKTUR DATA 2. Struktur Data Majemuk
Terdiri dari :
Struktur Data adalah suatu
koleksi atau kelompok data yang a. Linier
dapat dikarakteristikan oleh organisasi Misalnya : pohon ( Tree ), Pohon
serta operasi yang didefinisikan Biner ( Binery Tree ), Pohon Cari
terhadapnya.
Biner (Binaray Search Tree),General
Pemakaian Struktur Data yang tepat Tree Serta Graph.
didalam proses pemrograman, akan b. Non Liner
menghasilkan Algoritma yang lebih jelas dan Misalnya : Pohon (Tree ), Pohon
tepat sehingga menjadikan program secara
keseluruhan lebih sederhana. Biner ( Binary Tree ), Pohon Cari
Biner ( Binary Search Tree ), General
Pada garis besarnya, data Tree serta Graph.
dapat dikategorikan menjadi:

A. Type Data Sederhana /


Data Sederhana
1. INTEGER
Terdiri dari:
1. Data Sederhana Tunggal Integer merupakan Bilangan Bulat
Misalnya : Integer, Real/float, Dan Tidak Mengandung Pecahan Seperti
boolean dan charcter. : ... -3,-2,-1,2,3,...

Type data Integer


2. Data Sederhana Majemuk

Misalnya : String

Type Range Ukuran(


Byte)
B. Struktur Data
Integer - 32768..32767 2
Terdiri dari :
Long - 2147483648..2147483647 4
1. Struktur Data Sederhana
Misalnya : Array dan Record. 2.FLOAT
Type data yang merupakan bilangan
pecahan. Jenis data float di tulis dengan
menggunakan titik (koma) desimal.

Misalnya : 0.32 4,35 -131. 128

Type Real dapat juga ditulis dengan rumus :


M * Re = X
input NOT (!) AND (&&) OR(||)
M = Pecahan,R = Radix,

e = Exponen, X = Hasil Bilangan, A B C !A !B !C A&&B&& A||B||C


C
0 0 0 1 1 1 0 0
Misalnya : 3.2 * 10 -1 = 0,32
0 0 1 1 1 0 0 1
4.35 * 102 = 435 0 1 0 1 0 1 0 1
0 1 1 1 0 0 0 1

TYPE DAT SEDERHANA (Dalam 1 0 0 0 1 1 0 1


Program C++) 1 0 1 0 1 0 0 1
1 1 0 0 0 1 0 1
1 1 1 0 0 0 1 1
Type data FLOAT

Type Range Ukuran


(Byte)

Float 3.4x10-38 +38 4


s/d3.4x10
Double 1.7x10-308 +308 8
s/d1.7x10
LongDouble 3.4x10-4932 +4932 10
s/d1.1x10

CHARACTER
3. BOOL ATAU LOGICAL
Type data yang terdiri dari aksara
Type data yang hanya mempunyai dua (simbol) yang meliputi digit numerik,
bentuk keluaran yaitu nilai True dan False
(Benar dan Salah) yang dinyatakan dengan 1 character alfabetik dan spesial character.
dan 0, Sehingga satuan data yang terpakai Untuk menuliskan tipe char, karakter perlu di
cukup satu bits aja. Operator yang digunakan tulis di dalam tanda petik tunggal (‘ )
adalah: And, Or dan Not.
Contoh :
BOOL atau Logical ‘A’ -> karakter berupa huruf A
‘1’ -> karakter berupa angka 1

‘*’ -> karaktersimbol *

STRING

Fungsi Pada Operasi STRING


Operator Keterangan
Aritmatika 1.Strcpy ()

Untuk menyalin nilai string.


pow Pangkat
2.Strcpy ()

sqrt Untuk menggabungkan nilai string.


Menghitungakar
3.Strcpy ()
% Sisahasilbagi(modulus)
Untuk membandingkan 2 nilai string.

*,/ Perkalian, Pembagian


4.Strcpy ()

Untuk mengetahui panjang nilai string.


+,- Penjumlahan, Pengurangan
5.Strcpy ()
Merupakan type data majemuk yang Untuk mencari nilai karakter dalam string.
terbentuk dari kumpulan character sebanyak
256 (default) dengan jangkauan niai 0- 255.
Kumpulan character yang digunakan untuk
JENIS-JENIS OPERATOR DALAM
membentuk String dinamakan alfabet.
BAHASA C++
Pemberian nilai String diapt dengan tanda
petik ganda (“)

Bentuk umum penulisan tipe data ini


adalah:

tipe_data pengenal [panjangl];

pengenal = nama variabel

panjang = bilangan bulat yg menunjukan


jumlah karakter.

Contoh : char nama[15] ;


Operator Relasi Keterangan
Operator Pemberi Nilai Keterangan
Aritmatika
= Sama dengan (assignment)

*= = Tidak sama dengan


Perkalian
/= > Lebih besar
Pembagian
%= < Lebih kecil bagi
Sisa hasil
+= == Sama denganPenjumlahan
(bukan assignment)
-= >= Lebih besarPengurangan
atau sama dengan

<= Lebih kecil atau sama dengan

Operator Logika
Operator Unary Keterangan
Keterangan

&&+ Dan (AND)


Tanda Plus
Operator Bitwise Keterangan
||- Tanda Minus
Atau (OR)
~ NOT
! Bukan (NOT)
<< Shift Left
Operator Penambah & Keterangan
>>
Pengurang Shift Right

& AND
++ Penambahan
^ XOR

| OR
-- Pengurangan

TYPE TERSTRUKTUR

(Dalam program C++)

Bermanfaat untuk mengelompokkan


sejumlah data yang berlainan.
Contoh :
Struct data_pengawai
{
Int nip ;
Char name [25];
Char name [40];
}

ARRAY
DIMENSI 1 & 2

DefinisiArray
❖Array / Larik : Struktur Data Sederhana
yang dapat didefinisikan sebagai pemesanan
lokasi memory sementara pada komputer.

❖Array dapat didefinisikan sebagai suatu


himpunan hingga elemen yang terurut dan
homogen.

❖Terurut : Dapat diartikan bahwa elemen


tersebut dapat diidentifikasi sebagai elemen
pertama, elemen kedua dan seterusnya
sampai elemen ke-n.

❖Homogen : Adalah bahwa setiap elemen


dari sebuah Array tertentu haruslah
mempunyai type data yang sama.

❖Sebuah Array dapat mempunyai elemen


yang seluruhnya berupa integer atau
character atau String bahkan dapat pula
terjadi suatu Array mempunyai elemen
berupa Array.

❖Karakteristik Array :

1.Mempunyai batasan dari pemesanan


alokasi memory (Bersifat Statis)
2. Mempunyai Type Data Sama (Bersifat
Homogen)
3.Dapat Diakses Secara Acak
Definisi Array

❖3 Hal yang harus diketahui dalam


mendeklarasikan array :
a. Type data array
b. Nama variabel array
c. Subskrip / index array

❖Jenis Array (yang akan dipelajari) adalah : Array Dimensi Satu

a.Array Dimensi Satu (One Dimensional void main()


Array). { intbil [5];
b. Array Dimensi Dua (Two Dimensional clrscr;
Array). cout<<"Masukkan 5 bilangan genap :
c. Array Dimensi Tiga (Three Dimensional "<<endl;
Array). for (inti = 0; i< 5; i++)
{ cout<<"Bilangan ";
cout<<i + 1 <<" : ";
cin>>bil[i];
Array Dimensi Satu cout<<endl;
}
cout<<endl;
ARRAY DIMENSI SATU (One cout<<"5 bilangangenap yang dimasukkan “
Dimensional Array) <<endl;
Dapat disebut juga dengan istilah for (inti = 0; i< 5; i++)
vector yang menggambarkan data dalam cout<<" "<<bil[i];
getch();
suatu urutan.
}
Deklarasi :Type_Data Nama_Variabel
[index]
Rumus untuk menentukan jumlah elemen
Misalnya :int A[5]; dalam Array :
n

Penggambaran secara Logika: (Elemen Array)
i=1
Elemen Array
= Perkalian dari elemen sebelumnya
A[1]A[2]A[3]A[4]A[5] (untuk array dimensi dua & tiga)
0 12 3 4 Contoh:
Subscript / Index Suatu Array A dideklarasikan sbb :
int A[10];
maka jumlah elemen Array dimensi satu
tersebut adalah = 10
PEMETAAN (MAPPING) ARRAY
DIMENSI SATU KE STORAGE Contoh KONVERSI ANTAR BILANGAN

Rumus : @A[i] = B + (i–1)* L. Konversi Bilangan Decimal ke Hexadecimal


Dimana : @A[i] : Posisi Array yg dicari. Contoh : 254 (10) = .......(16).
B: Posisi awal index di memory komputer.
i :Subkrip atau indeks array yg dicari.
L: Ukuran / Besar memory suatu type data. Caranya dengan membagi bilangan
tersebut dengan enam belas sampai bilangan
Contoh: tersebut tidak bisa lagi dibagi enam belas
Suatu Array A dideklarasikan sebagai ( kurang dari enam belas ) dengan mencatat
berikut : setiap sisa pembagian.
int A[5]; dengan alamat awal index berada di
0011 254 : 16 = 15 sisa 14 atau E
(H)dan ukuran memory type data integer = 2 15 : 16 = sisa 15 atau F
Tentukan berapa alamat array A[3] ? Jadi254(10)= FE(16) diurutkan dari sisa
pembagian terakhir.
Rumus : @A[i] = B + (i–1)* L
Diketahui:
@A[i] = A[3] Contoh Penerapan Array Dimensi 1 Pada
B= 0011 (H) Program C++
i= 3
L= 2
1234567 indeks
Penyelesaian :
A[3] = 0011(H)+ (3 –1) * 2 value
= 0011(H) + 4 (D)
= 0011(H) + 4 (H)
= 0015(H) 21d2 21d4 21d6 21d8 21da 21dc 21de 21e0
alamat
4 Desimal = 4 Hexa
%x adalahhexadesimal
0 1 2 3 4
A[1]A[2]A[3]A[4]A[5]
00110013001500170019
Array Dimensi Dua
KONVERSI BILANGAN
2. ARRAY DIMENSI DUA (Two
1.Decimal adalah bilangan berbasis sepuluh Dimensional Array)
yang terdiri dari 0, 1, 2, 3, 4, 5, 6, 7, 8, dan 9.
Deklarasi : Type_DataNama_Variabel
2. Hexadecimal adalah bilangan berbasis [Index1] [index2];
enam belas yang terdiridari 0, 1, 2, 3, 4, 5, 6,
7, 8, 9, A, B, C, D, E, dan F. Misal :int A[3][2];
Menentukan jumlah elemen dalam Array
dimensi dua: Berdasarkan Cara pandang:
n 1.Kolom Pe rBaris (RowMajor Order/ RMO)
 M[0,0]M[0,1] M[1,0]M[1,1]M[2,0]M[2,1]
(Elemen array) Jumlah elemen per baris = 2
i=1
= Perkalian dari elemen sebelumnya (untuk 2. Baris Per Kolom (Coloumn Major Order/
array dimensi dua & tiga CMO)
M[0,0]M[1,0]M[2,0]M[0,1]M[1,1]M[2,1]
Contoh: Jumlah elemen per kolom = 3
Suatu Array X dideklarasikan sbb : Contoh Pemetaan :
int X[4][3];
maka jumlah elemen Array dimensi dua Suatu Array X dideklarasikan sebagai
tersebut adalah : berikut :
(4) * (3) = 12 Float X[4][3], dengan alamat index X[0][0]
berada di 0011(H)danukuran type data float
=4
PEMETAAN (MAPPING) ARRAY Tentukan berapa alamat array X[3][2]
DIMENSI DUA KE STORAGE berdasarkan cara pandang baris dan kolom ?

Terbagi Dua cara pandang


(representasi) yang berbeda: Lanjutan Contoh Pemetaan :

1. Secara Kolom Per Kolom (Coloumn


Major Order / CMO) Penyelesaian :
@M[i][j] = M[0][0] + {(j -1) * K + (i -1)} *
L Secara Baris PerBaris (Row Major
Oder/RMO)
2. Secara Baris PerBaris (Row Major Order/
RMO) @M[i][j]= @M[0][0] + {(i-1) * N+ (j1)}*L
@M[i][j] = M[0][0] + {(i -1) * N + (j -1)} * X[3][2]=0011(H)+{(3 –1) * 3 + (2 –1)} * 4
L = 0011(H)+ 28 (D)1C (H)
= 0011(H)+ 1C (H)
Keterangan: = 002D(H)

@M[i][j] = Posisi Array ygdicari, M[0][0] = Penyelesaian :


Posisi alamat awal index array,i= Baris, j =
kolom, L = Ukuran memory type dataK = Secara Kolom PerKolom (Coloumn Major
Banyaknya elemen per kolom, N = Oder/ CMO)
Banyakny aelemen per baris. @M[i][j]= @M[0][0] + {(j -1) * K + (i -1)}
*L
X[3][2] = 0011(H) + {(2 –1) * 4 + (3 –1)} *
Penggambaran secara logika 4
= 0011(H) + 24 (D)18 (H)
Misal :int M[3][2]; = 0011(H) + 18 (H)
(Array dengan 3 Baris& 2 Kolom) = 0029(H)
ARRAY
Contoh program array duadimensi DIMENSI BANYAK

#include<stdio.h>
#include<conio.h>
main() ARRAY DIMENSI TIGA (Three
{ Dimensional Array)
int a[3][5];
for (inti=0;i<3;i++)
{ Digunakan untuk mengelola data
for (int j=0;j<5;j++) dalam bentuk 3 dimensi atau tiga sisi.
{ Deklarasi:Type_DataNama_Variabel
printf("%x ",&a[j][i]); [index1] [index2] [index3];  Misal : int A [3]
} [4][2];
printf("
\ Menentukan jumlah elemen dalam Array
n"); dimensi3 :
} n
getch();  (index array)  = Perkalian dari statemen
} sebelumnya.
#include<stdio.h>
#include<conio.h> i=1
main()
{
int a[3][5]; Contoh:
for (inti=0;i<3;i++) Suatu Array X dideklarasikan sbb:
{ int A [3][4][2]; maka jumlah elemen Array
for (int j=0;j<5;j++) dimensi tiga tersebut adalah :
{
printf("%x ",&a[i][j]); (3) * (4) * (2) = 24
}
printf("
\
n"); PEMETAAN (MAPPING) ARRAY
} DIMENSI TIGA KE STORAGE
getch();
} Rumus :
@M[m][n][p] = M[0][0][0] + {((m-1) Monaco "," Liverpool "," RealMadrid ","
*(jum.elemen2 * jum.elemen3)) + ((n- CSKMoskow "," PSG ",
1)*(jum.elemen 3)) + " Inter Milan "," Arsenal ","
AtleticoMadrid "," Ajax"," AS Roma ","
((p-1)}* L ManchesterUnited "," Dortmund",
" Valencia "," Manchester City "," Bayern
Contoh : Munich "," Napoli "," Vilareal "
Suatu Array A dideklarasikan sebagai
berikut :int A [2][4][3], dengan alamat awal };
index A[0][0][0] berada di 0011(H) dan printf("Liga Champions : \n\n");
ukuran type data int = 2 . for(i=0; i<5; i++)
{
Tentukan berapa alamat array di A[2][3][2] ? ++h;
Penyelesaian : printf("Grup %c \n", h);
for(s=0; s<4; s++)
{
1.Tentukan jumlah elemen array A [2][4][3] printf(" %d. %s \n", s+1, nama[i][s]);
= (2) * (4) * (3) = 24 }
2.@M[m][n][p] = M[0][0][0] + {((m-1) printf("\n");
*(jum.elemen2 * jum.elemen3)) + ((n- }
1)*(jum.elemen )) + ((p-1)}* L getch();
}
A[2][3][2] = 0011(H) + {((2–1) * 4 * 3)
+ ((3-1) * 3) +(2-1)} * 2 TRINGULAR ARRAY
= 0011(H) + { } * 2 (ARRAY SEGITIGA)
= 0011(H) + 38 (D) (H)
= 0011(H) + 26 (H) Tringular Array dapat merupakan
= 0037(H) Upper Tringular (seluruh elemen di bawah
diagonal utama = 0), ataupun Lower
Contoh Program array dimensi 3 Tringular (seluruh elemen di atas diagonal
utama = 0).
/*
*Judul Program : Array dimensi 3 Dalam Array Lower Tringular
*Bahasa Program : Bahasa C dengan N baris, jumlah maksimum
*Pembuat Program :Hendro Pramana Sinaga elemen<> 0 pada bariske-I adalah = I,
*Tanggal Pembuatan : 5 Mei 2012 karenanya total elemen<> 0, tidak lebih dari
*/
N
#include <stdio.h> S I = N(N+1) /2
#include <conio.h> I=1

main() Contoh :
{ Diketahui suatu array segitiga atas memiliki
3 baris dan kolom, tentukan berapakah
char h=64, nama [5][4][22] = { jumlah elemen yang bukan nol pada array
"AC Milan "," Barcelona "," Porto "," tersebut.
I = N(N+1) /2
I = 3 (3+1) / 2
= 12 / 2
=6

SINGLE LINKED LIST (Non


Suatu Array Upper Tringular dan Circular)
Array Lower Tringular dapat dengan order
yang sama, dapat disimpan sebagai suatu
array dengan order yang berbeda.
KONSEP POINTER DAN LINKED LIST

Untuk mengolah data yang


SPARSE ARRAY (ARRAY JARANG) banyaknya tidak bisa ditentukan sebelumnya,
maka disediakan satu fasilitas yang
Suatu Array yang sangat banyak memungkinan untuk menggunakan suatu
elemen nol-nya. perubah yang disebut dengan perubahan
dinamis (Dinamic variable).

Perubah Dinamis (Dinamic variable)

Suatu perubah yang akan


dialokasikan hanya pada saat diperlukan,
yaitu setelah program dieksekusi.

Perbedaan Perubah Statis & Dinamis

Pada perubah statis, isi Memory pada


lokasi tertentu (nilai perubah) adalah data
sesungguhnya yang akan diolah. Pada
perubah dinamis, nilai perubaha adalah
alamat lokasi lain yang menyimpan data
sesungguhnya.

LINKED LIST (LINKED LIST)

Salah satu Struktur Data Dinamis


yang paling sederhana adalah Linked List
atau Struktur Berkait atau Senarai Berantai,
yaitu suatu kumpulan komponen yang
disusun secara berurutan dengan bantuan
Pointer.

Linked List (Senarai Berantai) Digunakan perintah new untuk


disebut juga dengan Senarai Satu Arah (One- mempersiapkan sebuah node baru berserta
Way List). Masing-masing komponen alokasi memorinya, kemudian node tersebut
dinamakan dengan Simpul (Node). Linked di isi data dan pointer nextnya ditunjuk ke
juga mengandung sebuah variable penunjuk NULL.
List, yang biasanya diberi nama START
(AWAL), yang berisi alamat dari simpul TNode *baru;
pertama dalam List. baru = new TNode;
baru->data = databaru;
baru->next = NULL;
Bentuk Node
Single Linked List non Circular
Single Linked List non Circular
a. Single : field pointer-nya hanya satu dan Menggunakan Head
satu arah, pada akhir node pointernya
menunjuk NULL. Dibutuhkan satu buah variabel
pointer : head yang akan selalu menunjuk
b. Linked List : node-node tersebut saling pada node pertama.
terhubung satu sama lain.

Deklarasi Pointer Penunjuk Head Single


PembuatanSingle Linked List non Linked List
Circular
Manipulasi linked list tidak dapat
Deklarasi Node : dilakukan langsung ke node yang dituju,
typedef struct TNode{ melainkan harus menggunakan suatu pointer
int data; penunjuk ke node pertama (Head) dalam
TNode *next; linked list.
};
Deklarasinya sebagai berikut:
Keterangan: TNode *head;
Pembuatan struct bernama TNode yang
berisi 2 field, yaitu field data bertipe integer
dan field next yang bertipe pointer dari
Fungsi Inisialisasi Single Linked List
TNode.
Void init()
{
head = NULL;
}
Single Linked List Non Circular dengan
Function untuk mengetahui kondisi Single Head
Linked List. Jika pointer head tidak
menunjuk pada suatu node maka kosong. Void insertDepan (int databaru)
{
Int isEmpty() TNode *baru;
{ baru = new TNode;
if (head == NULL) return 1; baru->data = databaru;
else return 0; baru->next = NULL;
} if(isEmpty()==1)
{
=baru;
Single Linked List Non Circular dengan head->next = NULL;
Head }
else
{
baru->next = head;
Menambah Node di Depan
head = baru;
Penambahan node baru akan dikaitan }
di node paling depan, namun pada saat printf(”Data masuk\n”);
pertama kali (data masih kosong), maka }
penambahan data dilakukan dengan cara:
node head ditunjukkan ke node baru tersebut.
Single Linked List Non Circular dengan
Prinsipnya adalah mengkaitkan node
Head
baru dengan head, kemudian head akan
menunjuk pada data baru tersebut sehingga
head akan tetap selalu menjadi data terdepan.
Menambah Node di Belakang

Penambahan data dilakukan di


belakang, namun pada saat pertama kali,
node langsung ditunjuk oleh head.
Penambahan di belakang membutuhkan
pointer bantu untuk mengetahui node
terbelakang. Kemudian, dikaitkan dengan
node baru. Untuk mengetahui data
terbelakang perlu digunakan perulangan.
Single Linked List Non Circular dengan Menghapus Node di Belakang
Head
 Membutuhkan pointer bantu dan hapus.
Void insertBelakang (int databaru) Pointer hapus digunakan untuk menunjuk
{ node yang akan dihapus, pointer bantu
TNode *baru,*bantu; untuk menunjuk node sebelum node yang
baru = new TNode; dihapus yang akan menjadi node terakhir.
baru->data = databaru;  Pointer bantu digunakan untuk menunjuk
baru->next = NULL; ke nilai NULL. Pointer bantu selalu
if(isEmpty()==1) { bergerak sampai sebelum node yang akan
head=baru; dihapus, kemudian pointer hapus
head->next = NULL; diletakkan setelah pointer bantu.
} Selanjutnya pointer hapus akan dihapus,
else { pointer bantu akan menunjuk ke NULL.
bantu=head;
while(bantu->next!=NULL){
bantu=bantu->next; Function untuk menghapus semua elemen
} Linked List
bantu->next = baru;
}
printf("Data masuk\n“);
} void clear()
{
TNode *bantu,*hapus;
bantu = head;
Menghapus Node di Depan while(bantu!=NULL)
 Penghapusan node tidak boleh dilakukan {
jika keadaan node sedang ditunjuk oleh hapus = bantu;
pointer, maka harus dilakukan bantu = bantu->next;
penggunakan suatu pointer lain (hapus) deletehapus;
yang digunakan untuk menunjuk node }
yang akan dihapus, barulah kemudian head = NULL;
menghapus pointer hapus dengan }
menggunakan perintah delete.
 Sebelum data terdepan dihapus, terlebih
dahulu head harus menunjuk ke node
berikutnya agar list tidak putus, sehingga
node setelah head lama akan menjadi
head baru.
 Jika head masih NULL maka berarti data
masih kosong!
STACK atau TUMPUKAN Fungsi IsFull

 Digunakan untuk memeriksa apakah


kondisi stack sudah penuh.
STACK (TUMPUKAN)  Dengan cara memeriksa TOP of Stack.
Jika TOP of STACK = MAX_STACK-1
Merupakan bentuk khusus dari Linier List
maka FULL (Penuh).
yang pemasukan dan penghapusan
Jika TOP of STACK < MAX_STACK-1
elemennya hanya dapat dilakukan pada satu
maka belum penuh.
posisi, yaitu posisi akhir dari List (Top).
Prinsip Stack adalah LAST-IN-FIRST-OUT
(LIFO).
Fungsi PUSH

 Digunakan untuk memasukkan elemen


OPERASI STACK ke dalam stack dan selalu menjadi
elemen teratas stack
 Dengan cara :
 ISEMPTY 1. Menambah satu (increment) nilai TOP
Untuk memeriksa apakah stack kosong of STACK setiap ada penambahan
 ISFULL elemen stack selama stack masih belum
Untuk memeriksa apakah stack sudah penuh.
penuh 2. Isikan nilai baruke stack berdasarkan
 PUSH indeks TOP of STACK setelah ditambah
Untuk menambahkan item pada posisi satu (diincrement).
paling atas(TOP)
 POP
Untuk menghapus item paling atas (TOP) Fungsi POP
 CLEAR
Untuk mengosongkan stack  Digunakan untuk menghapus elemen
yang berada pada posisi paling atasdari
stack.
 Dengan cara :
Fungsi IsEmpty
1. Ambil dahulu nilai elemen teratas
 Digunakan untuk memeriksa apakah stack dengan mengakses TOP of
stack masih dalam kondisi kosong. STACK.
 Dengan cara memeriksa TOP of STACK. 2. Tampilkan nilai yang akan diambil.
Jika TOP masih = -1 maka berarti stack 3. Lakukan decrement nilai TOP of
masih kosong. STACK sehingga jumlah elemen stack
berkurang 1.
Fungsi CLEAR Karakteristik penting Queue antrian sebagai
berikut
 Digunakan untuk mengosongkan stack /
1. Elemen antrian yaitu item-item data
membuat stack hampa sehingga Top
yang terdapat di elemen antrian.
pada Stack berada kembali di posisi Top 2. Head / front (elemen terdepan dari
= -1 antrian ).
3. Tail/rear (elemen terakhir dari antrian
Queue (Antrean) ).
4. Jumlah elemen pada antrian (count).
5. Status / kondisi antrian.
Pengertian Queue (Antrean)
Struktur Data Antrean (Queue)
adalah suatu bentuk khusus dari List Linier Kemudian kondisi antrian (queue) yang perlu
diperhatikan adalah :
dengan operasi pemasukan data hanya
diperbolehkan pada salah satu sisi, yang 1. Penuh Bila elemen di antrian 
disebut sisi Belakang / ekor (Tail) dan mencapai  kapasitas  maksimum 
operasi penghapusan hanya diperbolehkan antrian. Pada kondisi ini, tidak
mungkin dilakukan penambahan ke
pada sisi lainnya yang disebut sisi Depan / antrian. Penambahan elemen
kepala (Head) dari LinkedList. menyebabkan kondisi kesalahan
Overflow.
Queue berdisiplin FIFO (First In, 2. Kosong bila tidak ada elemen di
First Out). Queue merupakan kasus khusus antrian. Pada kondisi ini, tidak
ordered list. Dengan karakteristik terbatas itu mungkin dilakukan pengambilan
maka kita dapat melakukan optimasi elemen dari antrian. Pengambilan
representasi ADT Queue untuk memperoleh elemen menyebabkan kondisi
kerja paling optimal. kesalahan Underflow.
Misalnya Queue  Q= (a1,a2,a3…,an),
maka: Adapun penggunaan Queue adalah :
1. Elemen a1 adalah elemen paling Pengunaan Queue:
depan
2. Elemen ai adalah diatas elemen ai-1, 1. Simulasi antrian di dunia nyata,
di mana 1<i<n. antara lain :
3. Elemen an adalah elemen paling  Antrian pembelian tiket di depan
belakang loket untuk bis, kereta api, bioskop.
 Antrian mobil di depan gerbang jalan
Head (atau front) menunjuk ke awal
tol.
antrian Q (atau elemen terdepan), sedangkan
tail (rear) menunjuk akhir antrian Q (atau  Antrian kendaraan di jalanan umum.
elemen paling belakang).  System produksi.
2. Barisan bahan atau komponen yang
akan diproses suatu mesin.
3. Barisan bahan atau komponen yang
akan diproses suatu manusia.
4. Antrian proritas (priority queue).
Meski Queue sangat sederhana, namun DEQUEUE
Queue merupakan kakas dasar penyelesaian
masalah-masalah besar. Penggunaan Queue  Untuk menghapus item dari posisi
yang utama adalah untuk simulasi fenomena paling depan.
antrian di dunia nyata, serta fenomena
antrian di pengolahan data.
CLEAR

Prinsip Antrean :  Untuk mengosongkan queue.

 FIFO (First In First Out)


Fungsi Create
 FCFS (First Come First Serve)
 Digunakan untuk membentuk dan
menunjukan awal terbentuknya suatu
OPERASI QUEUE Antrean / Queue.

CREATE
Fungsi IsEmpty
 Untuk menciptakan dan
menginisialisasi Queue.  Untuk memeriksa apakah Antrian
 Dengan cara membuat Head dan Tail penuh atau kosong.
= -1.  Dengan cara memeriksa nilai Tail,
jika Tail = -1 maka antrian kosong
(empty).
ISEMPTY
a. Head adalah tanda untuk kepala
 Untuk memeriksa apakah queue antrian (elemen pertama dalam antrian)
kosong. yang tidak akan berubah-ubah .

b. Pergerakan pada Antrian terjadi


ISFULL dengan penambahan elemen antrian
kebelakang, yaitu menggunakan nilai
 Untuk memeriksa apakah queue Tail.
sudah penuh.

ENQUEUE

 Untuk menambahkan item pada


posisi paling belakang.
Fungsi IsFull Fungsi Clear

 Untuk mengecek apakah Antrian  Untuk menghapus elemen-elemen


sudah penuh atau belum. antrian dengan cara membuat Tail
 Dengan cara : dan Head = -1
- Mengecek nilai Tail.  Penghapusan elemen-elemen antrian
- Jika tail = MAX-1 berarti antrian sebenarnya tidak menghapus
sudah penuh (MAX-1 adalah batas arraynya, namun hanya mengeset
elemen array dalam program C++). indeks pengaksesan-nya ke nilai -1
sehingga elemen-elemen antrian tidak
lagi terbaca sehingga mengembalikan
antrian seperti keadaan semula.
Fungsi Enqueue

 Untuk menambahkan elemen ke


dalam antrian, penambahan elemen STRUKTUR POHON & KUNJUNGAN
selalu dilakukan pada elemen paling POHON BINER
belakang.
 Penambahan elemen selalu
menggerakan variable Tail dengan Pohon (Tree) termasuk struktur non
cara menambahkan Tail terlebih linear yang didefinisikan sebagai data yang
dahulu. terorganisir dari suatu item informasi cabang
yang saling terkait. Pohon atau Tree adalah
salah satu bentuk Graph terhubung yang
tidak mengandung sirkuit.
Fungsi Dequeue
Karena merupakan Graph terhubung,
 Digunakan untuk menghapus elemen
maka pada Pohon (Tree) selalu terdapat Path
terdepan (head) dari antrian.
atau Jalur yang menghubungkan setiap
 Dengan cara :
simpul dalam dua pohon.
Menggeser semua elemen antrian ke
depan dan mengurangi Tail dgn 1. Pohon (Tree) dapat juga didefinisikan
Penggeseran dilakukan dengan sebagai kumpulan elemen yang salah satu
menggunakan looping. elemennya disebut dengan Akar (Root) dan
sisa elemen lain (Simpul) yang terpecah
menjadi sejumlah himpunan yang saling
tidak berhubungan yang disebut dengan
Subpohon (Subtree) atau cabang.
KESIMPULAN atau direpresentasikan dalam bentuk tulisan,
suara, gambar, sinyal atau simbol.

Data adalah representasi dari fakta


dunia nyata. Fakta atau keterangan tentang
kenyataan yang disimpan, direkam atau SARAN
direpresentasikan dalam bentuk tulisan,
suara, gambar, sinyal atau simbol. Pengertian Bagi pembaca di harapkan
data ini menyiratkan suatu nilai yang bisa mengamalkan ilmu yang di dapat setelah
dinyatakan dalam bentuk konstanta / membaca jurnal ini. Dan jika jurnal kami ada
variable. Konstanta digunakan untuk kata – kata yang tidak berkenan di hati anda
menyatakan nilai tetap sedangkan variable kami minta maaf, Terimakasih.
digunakan dalam program untuk menyatakan
nilai yang dapat berubah-ubah selang
eksekusi berlangsung. Struktur data adalah
cara menyimpan atau merepresentasikan data
didalam komputer agar bisa dipakai secara
efisien. Sedangkan data adalah representasi
dari fakta dunia nyata. Fakta atau keterangan
tentang kenyataan yang disimpan, direkam

DAFTAR PUSTAKA

http://infonya-ti.blogspot.com/2012/07/ rangkuman-mata-muliah-struktur-data- di.html

http://infonya-ti.blogspot.com/2012/07/ rangkuman-mata-muliah-struktur-data- di.html

http://nazaruddin.blog.unigha.ac.id/struktur-data / Heriyanto, Imam, Budi Raharjo (2003).

Materi Kuliah Struktur Data - Tree Structure.pdf


Modul Praktikum "Struktur Data" Laboratorium Dasar Komputer. Program Ilmu Komputer
Universitas Sriwijaya 2006.

IlmuKomputer.Com. Wahono, Romi Satria(2003).

Anda mungkin juga menyukai