Anda di halaman 1dari 39

SISTEM BILANGAN

Konsep Dasar Sistem Bilangan

Sistem bilangan adalah suatu cara untuk mewakili besaran dari suatu item

fisik. Konsep dasar sistem bilangan dikarakteristikkan oleh basis (radix), absolute

digit dan posisi (place) value, yang dituliskan:

Basis yang digunakan sistem bilangan tergantung dari jumlah nilai bilangan

yang dipergunakan.

1. Sistem Bilangan Desimal

Sistem bilangan desimal menggunakan basis 10 (deca). Menggunakan 10

macam simbol bilangan berbentuk digit angka: 0,1,2,3,4,5,6,7,8,9. Dasar

penulisan:

Bentuk nilai desimal dapat berupa integer (bilangan bulat) dan pecahan.

Dapat ditulis dalam bentuk eksponensial yaitu ditulis dengan mantissa dan

exponent. Contoh:
Penulisan base/radix dituliskan setelah absolut digit, yaitu A10, atau A(D).

Dalam hal ini yang dituliskan adalah A10. Contoh nilai 435210 dan 762,1510

dapat diartikan:

2. Sistem Bilangan Biner

Sistem bilangan biner menggunakan basis 2 (binary). Menggunakan 2 macam

simbol bilangan berbentuk digit angka: 0 dan 1. Penulisan base/radix

dituliskan setelah absolut digit, yaitu A2 atau A(B). Dalam hal ini yang

dituliskan adalah A2. Dasar penulisan:

Contoh penulisan: 1001 00112

3. Sistem Bilangan Oktal

Sistem bilangan oktal menggunakan basis 8 (octal). Menggunakan 8 macam

simbol bilangan berbentuk digit angka: 0,1,2,3,4,5,6,7. Penulisan base/radix

dituliskan setelah absolut digit, yaitu A8 atau A(O). Dalam hal ini yang dituliskan

adalah A8. Dituliskan:

Contoh penulisan: 3478


4. Sistem Bilangan Hexadecimal

Sistem bilangan hexadesimal menggunakan basis 16 (hexa). Menggunakan 16

macam simbol bilangan berbentuk digit angka:

0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Penulisan base/radix dituliskan setelah

absolut digit, yaitu A16 atau A(H). Dalam hal ini yang dituliskan adalah A16.

Dituliskan:

Contoh penulisan: A7816

2.1 Satuan Data

Komputer bekerja atas dasar sistem biner berupa 0 dan 1 yang disebut bit.

Bit merupakan satuan data terkecil dalam sistem komputer. Bit-bit dapat digunakan

untuk menyusun karakter apa saja. Sebuah karakter dinyatakan dengan 8 bit atau 16

bit.

1. Byte

Byte merupakan satuan yang digunakan untuk menyatakan sebuah karakter

pada sistem ASCII atau EBCDIC. 1 Byte = 8 bit.

2. Kilobyte (KB)

Biasa digunakan untuk berkas gambar berukuran kecil. 1 Kilobyte = 1024 byte

3. Megabyte (MB)

Biasa digunakan untuk menyatakan kapasitas RAM dalam PC.

1 MB = 1024 KB = 1.048.576 byte


4. Gigabyte (GB)

Biasa digunakan untuk menyatakan kapasitas harddisk dalam

PC. 1 GB = 1024 MB = 1.073.741.824 byte

5. Terabyte (TB)

Biasa digunakan untuk menyatakan kapasitas harddisk dalam mainframe.

1 TB = 1024 GB = 1.009.511.627.776 byte

6. Petabyte (PB)

1 PB = 1024 TB

Sistem Pengkodean

Sistem yang digunakan untuk mengkodekan karakter bermacam-macam.

Data disimpan dalam memori komputer menempati posisi 1 byte, yang

menggunakan kombinasi dari digit Biner. Komputer berbeda dalam menggunakan

kode biner untuk mewakili sebuah karakter. Ada beberapa kode yang akan dibahas,

yaitu BCD, EBCDIC, ASCII dan Unicode

1. BCD (Binary Coded Decimal)

Merupakan kode biner yang digunakan hanya untuk mewakili nilai digit

desimal saja. Sebuah karakter BCD dinyatakan dengan 4 bit Karakter yang

tersedia sebanyak 10 angka, yaitu angka 0,1,2,3,4,5,6,7,8,9. Digunakan pada

komputer generasi pertama.


Tabel 2.1 BCD 4 bit

2. EBCDIC (Extended Binary Coded Decimal Interchange Code)

EBCDIC dikembangkan oleh IBM, yang diterapkan pada berbagai komputer

mainframe. Sebuah karakter dinyatakan dengan 8 bit. Karakter yang tersedia

sebanyak 28 = 226 karakter. Digunakan pada komputer generasi ketiga.

Tabel 2.2 EBCDIC

3. ASCII (American Standard Code for Information Interchange)

ASCII dikembangkan oleh ANSI (American National Standard Institute).

Sebuah karakter ASCII dinyatakan dengan 8 bit. Karakter yang tersedia


sebanyak 226 karakter, meliputi huruf, angka, dan spesial karakter, termasuk

simbol Yunani dan karakter grafis.

Tabel 2.3 ASCII

4. Unicode

Sebuah karakter Unicode dinyatakan dengan 16 bit. Karakter yang tersedia

sebanyak 65.536 karakter, meliputi huruf, angka, dan spesial karakter,

termasuk simbol Yunani, karakter grafis, simbol Arab dan Cina.

Konversi Bilangan

1. Konversi dari Bilangan Desimal ke Biner


Dengan cara membagi bilangan desimal dengan 2 (basis biner) sampai tidak

bisa dibagi lagi. Kemudian sisa pembagian diurutkan dari bawah ke atas

dalam format 8 bit. Contoh nilai 8910 akan dikonversikan menjadi Biner.

2. Konversi dari Bilangan Desimal ke Oktal

Dengan cara membagi bilangan desimal dengan 8 (basis oktal) sampai tidak

bisa dibagi lagi. Cara yang digunakan sama dengan bilangan biner. Contoh nilai

14710 akan dikonversikan menjadi Oktal.

3. Konversi dari Bilangan Desimal ke Hexadesimal

Dengan cara membagi bilangan desimal dengan 16 (basis hexa) sampai tidak

bisa dibagi lagi. Cara yang digunakan sama dengan bilangan biner.
Contoh nilai 12310 akan dikonversikan menjadi Hexa

4. Konversi dari Bilangan Biner ke Desimal

Dengan cara mengalikan masing-masing bit biner dalam bilangan sesuai

dengan radix dan position value-nya. Contoh bit 11 01012 akan dikonversikan

menjadi Desimal.

5. Konversi dari Bilangan Biner ke Oktal

Dengan cara membagi digit biner tersebut ke dalam tiga digit dari kanan.

Ketiga digit tersebut kemudian dikonversikan menjadi decimal. Contoh bit

1010 10112 akan dikonversikan menjadi Oktal.


6. Konversi dari Bilangan Biner ke Hexadesimal

Dengan cara membagi digit biner tersebut ke dalam empat digit dari kanan.

Keempat digit tersebut kemudian dikonversikan menjadi decimal. Contoh bit

101010112 akan dikonversikan menjadi Hexa.

7. Konversi dari Bilangan Oktal ke Desimal

Dengan cara mengalikan masing-masing bit octal dalam bilangan sesuai

dengan radix dan position valuenya. Contoh bit 3718 akan dikonversikan

menjadi Desimal.

8. Konversi dari Bilangan Oktal ke Biner

Dengan cara mengkonversikan setiap satu digit octal menjadi tiga digit biner.

Contoh bit 718 akan dikonversikan menjadi Biner.

Maka dituliskan menjadi 718 = 0011 10012


9. Konversi dari Bilangan Oktal ke Hexadesimal

Konversi ini tidak dapat dilakukan secara langsung, tetapi harus

dikonversikan terlebih dahulu ke Desimal atau Biner. Contoh bit 2438 akan

dikonversikan menjadi Hexa.

Maka dituliskan menjadi 2438 = A316

10. Konversi dari Bilangan Hexadesimal ke Desimal

Dengan cara mengalikan masing-masing bit hexa dalam bilangan sesuai

dengan radix dan position valuenya. Contoh bit 8F16 akan dikonversikan

menjadi Desimal.

11. Konversi dari Bilangan Hexadesimal ke Biner

Dengan cara mengkonversikan setiap satu digit hexa menjadi empat digit

biner. Contoh bit 8F16 akan dikonversikan menjadi Biner

Maka dituliskan menjadi 8F16 = 1000 11112


12. Konversi dari Bilangan Hexadesimal ke Oktal

Konversi ini tidak dapat dilakukan secara langsung, tetapi harus

dikonversikan terlebih dahulu ke Desimal atau Biner sama dengan konversi

dari oktal ke hexa. Contoh bit 8F16 akan dikonversikan menjadi Oktal

Maka dituliskan menjadi 8F16 = 2178


REPRESENTASI DATA

Pengertian Representasi Data

Komputer menggunakan dan memanipulasi data untuk perhitungan

aritmatik, pemrosesan data, dan operasi logik. Type data yang digunakan dalam

komputer digital diklasifikasikan:

1. Data Numerik: merepresentasikan integer, pecahan, real, dan desimal

berkode biner.

2. Data Logikal: digunakan oleh operasi seperti OR, AND, COMPLEMENT,

COMPARE dan SHIFT.

3. Data Bit Tunggal: digunakan oleh operasi seperti SET, CLEAR, dan TEST.

4. Data Alfanumerik: digunakan untuk manipulasi string oleh instruksi seperti

MOVE dan SEARCH

Berikut ini merupakan Ilustrasi Representasi Data :

Gambar 3.1 Ilustrasi Representasi Data

27
28

Representasi Integer

Untuk keperluan pengolahan dan penyimpanan data komputer, hanya

bilangan biner yang dapat merepresentasikan bilangan Integer direpresentasikan

selain oleh nilai bilangannya juga dengan adanya tambahan tanda (Signed Integer).

Berikut ini tipe-tpe representasi integer :

1. Representasi Sign and Magnitude

Merepresentasikan bilangan integer negative. Bit yang paling kiri

diidentifikasikan sebagai tanda (sign). Jika bit paling kiri adalah nol maka

bilangan tersebut positif. Jika bit paling kiri adalah satu maka bilangan

tersebut negative.

Contoh:

+1810 = 000100102

−1810 = 100100102

a. Penjumlahan pada Sign-Magnitude mempunyai aturan:

1) Sign tidak dijumlahkan, hanya magnitude.

2) Buang carry out dari bit yang paling kiri.

3) Jumlahkan yang sign-nya sama

4) Sign hasil = sign penambah

Contoh penjumlahan 4 bit:


29

b. Pengurangan pada Sign-Magnitude mempunyai aturan:

1) Lakukan pengurangan jika sign sama

2) Jika sign tidak sama, ubah soal ke

penjumlahan Contoh pengurangan:

Kelemahan Sign-Magnitude:

Penambahan dan pengurangan memerlukan pertimbangan baik tanda

bilangan maupun nilai relatifnya.Ada dua representasi bilangan nol, yaitu

+010 = 000000002

−010 = 100000002

2. Representasi Komplemen Satu (One’s Complement)

Komplemen pada dasarnya merubah bentuk pengurangan menjadi

pertambahan. Komplementasi bilangan biner dengan cara mengubah 1

menjadi 0 dan 0 menjadi 1. Contoh:

00110110 = 11001001

3. Representasi Komplemen Dua (Two’s Complement)

Dibentuk dengan mengambil komplemen satu dari bilangannya dan dengan

menambahkan 1 pada posisi paling kanan. Contoh desimal 49 (dalam biner)

menjadi bentuk komplemen dua:


30

Penjumlahan Biner

Penjumlahan bilangan biner dilakukan sama seperti penjumlahan bilangan-

bilangan desimal. Operasi pengurangan, perkalian dan pembagian seperti yang

dilakukan pada komputer dan kalkulator digital sesungguhnya menggunakan

penjumlahan sebagai operasi dasarnya.

Ada 4 kondisi dalam penjumlahan bilangan biner:

0+0=0

1+0=1

0+1=1

1 + 1 = 0 (carry out 1)

Maksud dari carry out, hasilnya tidak bisa memuat lebih dari 1 digit, tetapi

disimpan ke dalam kolom sebelah yang lebih tinggi nilainya (digit paling kiri yang

diabaikan).

1. Penjumlahan Biner dengan Komplemen Dua

Ada beberapa kasus yang dapat dilakukan dengan komplemen dua:

a. Kasus 1: Dua Blangan Positip

Penjumlahan dari dua bilangan positip dilakukan secara langsung.

Contoh:
31

b. Kasus 2: Blangan Positip dan Negatip yang lebih kecil

Contoh: 8 + (-4).

Caranya bilangan -4 akan diubah ke dalam bentuk komplemen dua,

sehingga biner 4 (0100) menjadi:

c. Kasus 3: Blangan Positip dan Negatip yang lebih besar

Contoh: 8 + (-11).

Caranya bilangan -11 akan diubah ke dalam bentuk komplemen dua,

sehingga biner 11 (1101) menjadi:

d. Kasus 4: Dua Blangan Negatip

Contoh: -8 + (-7)
32

Caranya bilangan -8 dan -7 akan diubah ke dalam bentuk komplemen

dua, jadi biner 8 (1000) dan 7 (0111) menjadi:


ARRAY DIMENSI BANYAK

Array Dimensi Tiga (Three Dimensional Array)

1. Deklarasi Array Dimensi Tiga

Digunakan untuk mengelola data dalam bentuk 3 dimensi atau tiga

sisi. Deklarasi : Type_Data Nama_Variabel [index1] [ndex2] [index3];

Misal : int A [3][4][2];

Gambar 4.1 Penggambaran Logika Array Dimensi Tiga

2. Menentukan jumlah elemen dalam Array dimensi 3 :

Π = Perkalian dari statemen

sebelumnya Contoh :

Suatu Array X dideklarasikan sbb : int A [3][4][2]; maka jumlah elemen Array

dimensi tiga tersebut adalah : (3) * (4) * (2) = 24

33
34

3. Pemetaan Array Dimensi Tiga

Contoh :

Suatu Array A dideklarasikan sebagai berikut : int A [2][4][3], dengan alamat

awal index A[0][0][0] berada di 0011(H) dan ukuran type data int = 2 Tentukan

berapa alamat array di A[2][3][2] ?

4. Contoh Program Array Dimensi Tiga


35

Gambar 4.2 Tampilan Program Array Dimensi Tiga

Tringular Array

Tringular Array dapat merupakan Upper Tringular (seluruh elemen di bawah

diagonal utama = 0), ataupun Lower Tringular (seluruh elemen di atas diagonal

utama

= 0). Dalam Array Lower Tringular dengan N baris, jumlah maksimum elemen <> 0

pada baris ke-I adalah = I, karenanya total elemen <> 0, tidak lebih dari
36

Contoh :

Diketahui suatu array segitiga atas memiliki 3 baris dan kolom, tentukan

berapakah jumlah elemen yang bukan nol pada array tersebut.

I = N(N+1) / 2

I = 3 (3+1) / 2

= 12 / 2

=6

Contoh bentuk array nya adalah seperti dibawah ini :

Suatu Array Upper Tringular dan Array Lower Tringular dapat dengan order

yang sama, dapat disimpan sebagai suatu array dengan order yang berbeda,

Contohnya :

Sparse Array

Suatu Array yang sangat banyak elemen nol-nya, contohnya adalah Array A

pada Gambar berikut :


SINGLE LINKED LIST (NON CIRCULAR)

Konsep Pointer dan Linked List

Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya,

maka disediakan satu fasilitas yang memungkinan untuk menggunakan suatu

perubah yang disebut dengan perubah dinamis (Dinamic variable). Perubah Dinamis

(Dinamic variable) adalah suatu perubah yang akan dialokasikan hanya pada saat

diperlukan, yaitu setelah program dieksekusi. Perbedaan Perubah Statis & Dinamis

adalah pada perubah statis, isi memory pada lokasi tertentu (nilai perubah) adalah

data sesungguhnya yang akan diolah. Sedangkan pada perubah dinamis, nilai

perubah adalah alamat lokasi lain yang menyimpan data sesungguhnya. Dengan

demikian data yang sesungguhnya dapat dimasukkan secara langsung. Dalam hal

cara pemasukkan data dapat diilustrasikan seperti dibawah ini.

Gambar 5.1 Ilustrasi Peubah Dinamis dan Peubah Statis

5.1 Pointer

Pointer digunakan sebagai penunjuk ke suatu alamat memori. Dalam

pemrograman C++, Type Data Pointer dideklarasikan dengan bentuk umum : Type

Data * Nama Variabel.

37
Type Data dapat berupa sembarang type data, misalnya char, int atau float.

Sedangkan Nama variabel merupakan nama variabel pointer Contoh penggunaan

pointer dalam program C++:

Void main()
{
int x,y,*z;
x = 75; //nilai x = 75
y = x; //nilai y diambil dari nilai x
z = &x; //nilai z menunjuk kealamat pointer dari nilai
x
getch();
}

5.2 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)

disebut juga dengan Senarai Satu Arah (One-Way List). Masing-masing

Gambar 5.2 Contoh Linked List

Berikut ini merupakan perbedaan karakteristik Array dengan Linked List :


Setiap simpul dalam suatu Linked List terbagi menjadi dua bagian,yaitu :

1. Medan Informasi

Berisi informasi yang akan disimpan dan diolah.

2. Medan Penyambung (Link Field)

Berisi alamat berikutnya. Bernilai 0, Jika Link tersebut tidak menunjuk ke Data

(Simpul) lainnya. Penunjuk ini disebut Penunjuk Nol.

Linked List juga mengandung sebuah variable Penunjuk List, yang biasanya

diberi nama START (AWAL) yang berisi alamat dari simpul pertama dalam

List.

Gambar 5.3 Contoh Linked List dengan Penunjuk List

Berikut ini merupakan contoh dari Penyajian Linked List Dalam Memory :

Gambar 5.4 Penyajian Linked List dalam Memory


Single Linked List Non Circular

1. Pengetian Single Linked List

Kata Single berarti field pointer-nya hanya satu dan satu arah,pada akhir node

pointernya menunjuk NULL.

Gambar 5.5 Menempati alamat memori tertentu

Sedangkan Linked List merupakan node-node tersebut saling terhubung satu sama

lain. Setiap node pada linked list mempunyai field yang berisi pointer ke node

berikutnya, dan juga memiliki field yang berisi data. Node terakhir akan menunjuk ke

NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked

list.

Gambar 5.6 Contoh Linked Linst Non Circular

2. Pembuatan Single Linked List Non Circular

Deklarasi Node :
typedef struct TNode{
int data;
TNode *next;
};

Keterangan:

a. Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data

bertipe integer dan field next yang bertipe pointer dari TNode

b. Setelah pembuatan struct, buat variabel head yang bertipe pointer dari

TNode yang berguna sebagai kepala linked list.

c. Digunakan perintah new untuk mempersiapkan sebuah node baru

berserta alokasi memorinya, kemudian node tersebut diisi data dan

pointer nextnya ditunjuk ke NULL.

TNode *baru;

baru = new TNode;

baru->data =

databaru; baru->next

= NULL;

Single Linked List Non Circular Menggunakan Head

Dibutuhkan satu buah variabel pointer : head yang akan selalu menunjuk pada

node pertama. Berikut contohnya :

Gambar 5.7 Contoh Single Linked List Non Circular Menggunakan Head
1. Deklarasi Pointer Penunjuk Head Single Linked List

Manipulasi linked list tidak dapat dilakukan langsung ke node yang dituju,

melainkan harus menggunakan suatu pointer penunjuk ke node pertama (Head)

dalam linked list. Deklarasinya sebagai berikut:

TNode *head;
Fungsi Inisialisasi Single Linked List
void init()
{
head = NULL;
}

2. Function untuk mengetahui kondisi Single Linked List

Jika pointer head tidak menunjuk pada suatu node maka kosong

int isEmpty()
{
if (head == NULL) return 1;
else return 0;
}

3. Menambah Node di Depan

Penambahan node baru akan dikaitan di node paling depan, namun pada

saat pertama kali (data masih kosong), maka penambahan data dilakukan dengan

cara: node head ditunjukkan ke node baru tersebut. Prinsipnya adalah mengkaitkan

node baru dengan head, kemudian head akan menunjuk pada data baru tersebut

sehingga head akan tetap selalu menjadi data terdepan.


Berikut contoh bagian listing untuk menambah node di depan dengan

menggunakan C++ :

Ilustrasi penambahan node didepan, sebagai berikut :

Gambar 5.8 Ilustrasi penambahan node didepan


4. 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.Berikut contoh

listing penambahan node di belakang dengan menggunakan C++ :

Ilustrasi penambahan node dibelakang sebagai berikut :

Gambar 5.9 Ilustrasi penambahan node dibelakang


5. Menghapus Node di Depan

Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk

oleh pointer, maka harus dilakukan penggunakan suatu pointer lain (hapus) yang

digunakan untuk menunjuk node yang akan dihapus, barulah kemudian 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!. Berikut contoh listing menghapus node

didepan dengan menggunakan C++ :

Ilustrasi penghapusan node didepan sebagai berikut :

Gambar 5.10 Ilustrasi penghapusan node didepan


6. Menghapus Node di Belakang

Membutuhkan pointer bantu dan hapus. Pointer hapus digunakan untuk

menunjuk node yang akan dihapus, pointer bantu untuk menunjuk node sebelum

node yang dihapus yang akan menjadi node terakhir. Pointer bantu digunakan untuk

menunjuk ke nilai NULL. Pointer bantu selalu bergerak sampai sebelum node yang

akan dihapus, kemudian pointer hapus diletakkan setelah pointer bantu. Selanjutnya

pointer hapus akan dihapus, pointer bantu akan menunjuk ke NULL. Berikut ini

contoh listing menghapus node di belakang dengan menggunakan C++ :

Ilustrasi penghapusan node dibelakang sebagai berikut:

Gambar 5.11 Ilustrasi penghapusan node dibelakang


7. Function untuk menghapus semua elemen

Berikut ini merupakan contoh listing dengan menggunakan C++ untuk

menghapus semua elemen yang berada didalam linked list:

void clear()
{
TNode *bantu,*hapus;
bantu = head;
while(bantu!=NULL)
{
hapus = bantu; bantu
= bantu->next; delete
hapus;
}
head = NULL;
}

Menampilkan Isi Linked List

Linked list ditelusuri satu-persatu dari awal sampai akhir node. Penelusuran

dilakukan dengan menggunakan pointer bantu, karena pointer head yang menjadi

tanda awal list tidak boleh berubah/berganti posisi. Penelusuran dilakukan terus

sampai ditemukan node terakhir yang menunjuk ke nilai NULL. Jika tidak NULL, maka

node bantu akan berpindah ke node selanjutnya dan membaca isi datanya dengan

menggunakan field next sehingga dapat saling berkait. Jika head masih NULL berarti

data masih kosong!. Berikut ini contoh listing dengan menggunakan C++ untuk

menampilkan isi Linked List :

void tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
cout<<bantu->data<<" ";
bantu=bantu->next;
}
printf(“\n”);
} else printf(“Masih kosong\n“);

Gambar 5.12 Menampilkan Isi Linked List

Singled Linked List Non Circular Menggunakan Head dan Tail

Dibutuhkan dua variabel pointer : head dan tail. Head selalu menunjuk pada

node pertama, sedangkan tail selalu menunjuk pada node terakhir. Kelebihan dari

Single Linked List dengan Head & Tail adalah pada penambahan data di belakang,

hanya dibutuhkan tail yang mengikat node baru saja tanpa harus menggunakan

perulangan pointer bantu.

Gambar 5.13 Contoh Linked List dengan Head dan Tail

1. Inisialisasi Linked List

TNode *head, *tail;

2. Fungsi Inisialisasi Linked List

void init(){

head = NULL;

tail = NULL;
}

3. Function untuk mengetahui kondisi LinkedList kosong / tidak

int isEmpty(){

if(tail == NULL) return 1;

else return 0;

4. Menambah Node di Depan dengan Head dan Tail

Berikut contoh listing dengan menggunakan C++ untuk menambah Node di

depan dengan Head dan Tail :

Ilustrasi penambahan node didepan dengan head dan tail sebagai berikut :
Gambar 5. 14 Ilustrasi penambahan node didepan dengan head dan tail

5. Menambah Node di Belakang dengan Head dan Tail

Berikut contoh listing dengan menggunakan C++ untuk menambah Node di

belakang dengan Head dan Tail :

Ilustrasi penambahan node dibelakang dengan head dan tail sebagai berikut :
Gambar 5. 15 Ilustrasi penambahan node dibelakang dengan head dan tail

6. Menghapus Node di Depan (Dengan Head dan Tail)

Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk

oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan pointer

hapus pada head, kemudian dilakukan pergeseran head ke node berikutnya

sehingga data setelah head menjadi head baru, kemudian menghapus pointer hapus

dengan menggunakan perintah delete. Jika tail masih NULL maka berarti list masih

kosong!. Berikut contoh listing dengan menggunakan C++ untuk mengahous Node di

depan dengan Head dan Tail :


Ilustrasi Menghapus Node di Depan (Dengan Head dan Tail) sebagai berikut :

Gambar 5. 16 Ilustrasi menghapus node ddepan dengan head dan tail

7. Menghapus Node di Belakang (Dengan Head dan Tail)

Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk

oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan variable

hapus pada tail. Jika tail masih NULL maka berarti list masih kosong! Dibutuhkan

pointer bantu untuk membantu pergeseran dari head ke node berikutnya sampai

sebelum tail, sehingga tail dapat ditunjukkan ke bantu, dan bantu tersebut akan

menjadi tail yang baru. Setelah itu hapus pointer hapus dengan menggunakan

perintah delete. Berikut contoh listing dengan menggunakan C++ untuk mengahpus

Node di belakang dengan Head dan Tail :


54

Ilustrasi Menghapus Node di Belakang (Dengan Head dan Tail) sebagai

berikut:

Gambar 5. 17 Ilustrasi menghapus node dibelakang dengan head dan tail

8. Function untuk menghapus semua elemen

Berikut ini merupakan contoh listing dengan menggunakan C++ untuk

menghapus semua elemen yang berada didalam linked list dengan head dan

tail:

void clear()
{
TNode *bantu,*hapus;
bantu = head;
while(bantu!=NULL)
{
hapus = bantu; bantu
= bantu->next; delete
hapus;
}
head = NULL; tail
= NULL;
}

Anda mungkin juga menyukai