Sesungguhnya aku ini memberikan hiburan bagi batinku dengan sedikit permainan, supaya hatiku itu lebih tegar berdiri diatas kebenaran. [Abu Dardaa' r.a.]
Informasi dan Promo TOYOTA SUMBAR HUB : Edo Toyota Astra 081363956598 Atau BBM 5A87117B
Atau instalasi sistem operasi troubleshooting, Network dan upgrading dll: 081363956598 atau blog ini....
khusus daerah padang dan sekitarnya....n_n

Array

Array


Array merupakan bagian dasar pembentukan suatu struktur data yang lebih kompleks. Hampir setiap jenis struktur data kompleks dapat disajikan secara logik oleh array.

q Array : Suatu himpunan hingga elemen yang terurut dan homogen, atau dapat didefinisikan juga sebagai pemesanan alokasi memory sementara pada komputer.

q Terurut : elemen tersebut dapat diidentifikasi sebagai element pertama, kedua, dan seterusnya sampai elemen ke-n.

q Homogen : setiap elemen data dari sebuah array tertentu haruslah mempunyai tipe data yang sama.


Karakteristik Array :

1. Mempunyai batasan dari pemesanan alokasi memory ( bersifat statis)

2. Mempunyai type data sama ( bersifat Homogen)

3. Dapat diakses secara acak.

4. Berurutan ( terstruktur ).


Array mempunyai dimensi :

  1. Array Dimensi Satu (Vektor)
  2. Array Dimensi Banyak.

- Dimensi Dua (Matriks/Tabel)

- Dimensi Tiga (Kubik).


ARRAY DIMENSI SATU

Ø Merupakan bentuk yang sangat sederhana dari array.

Ø Setiap elemen array mempunyai subskrip/indeks.

Ø Fungsi indeks/subskrip ini antara lain :

1. Menyatakan posisi elemen pada array tsb.

2. Membedakan dengan elemen lain.


Penggambaran secara fisik Array A(1:N) :


A(1)

A(2)

A(3)

A(4)

A(N)


Ket : A : nama array

1,2,3,4,…,N : indeks / subskrip


Ø Secara umum Array Dimensi Satu A dengan tipe T dan subskrip bergerak dari L sampai U ditulis : A(L:U) = (A(I)); I =L , L+1, L+2, …, U

Keterangan : L : batas bawah indeks / lower bound

U : batas atas indeks / upper bound

A : nama Array


Ø Banyaknya elemen array disebut Rentang atau Range A(L:U) = U – L + 1


Ø Range khusus untuk array Dimensi Satu yang mempunyai batas bawah indeks L=1 dan batas atas U=N, maka Range A adalah A(1:N) =( N – 1) + 1 = N


Contoh :

Data hasil pencatatan suhu suatu ruangan setiap satu jam, selama periode 24 jam ditulis dalam bentuk Array Dimensi Satu menjadi


Misal :

nama arraynya Suhu, berarti elemennya dapat kita tulis sebagai Suhu(I), dengan batas bawah 1 dan batas atas 24.

Suhu(I):menyatakan suhu pada jam ke-I dan 1<=I<=24

Range Suhu(1:24)=(24-1)+1=24


ARRAY DIMENSI BANYAK



Ø Array Dimensi Banyak (Multi-Dimensional ARRAY) :

suatu array yang elemen –elemennya berupa array juga.

Ø Array Dimensi Dua perlu dua subskrip/indeks :

a. Indeks pertama untuk menyatakan posisi baris

b. Indeks kedua untuk menyatakan posisi kolom

Ø Secara umum Array Dimensi Dua B dengan elemen-elemen bertype data T dinyatakan sbb : B(L1:U1,L2:U2)={B(I,J)}

L1<=1<=U1, L2<=1<=U2, dan setiap elemen B(I,J) bertype

data T

Keterangan : B = nama array

L1 = batas bawah indeks baris

L2 = batas bawah indeks kolom

U1 = batas atas indeks baris

U2 = batas atas indeks kolom

Ø Jumlah elemen baris dari array B adalah (U2 - L2 + 1)

Ø Jumlah elemen kolom dari array B adalah (U1 – L1 + 1)

Ø Jumlah total elemen array adalah (U2 – L2 + 1) * (U1 – L1 + 1)

Ø Suatu array B yang terdiri atas M elemen dimana elemennya berupa array dengan N elemen, maka dapat digambarkan sbb:


1 2 3 …… J ….. N

1







2







3













I





B(I,J)








M








· Array diatas dituliskan :

B(1:M, 1:N) = B(I,J) ;

Untuk I = 1,2,3,………….,M dan

J = 1,2,3,……….., N

· Jumlah elemen array B : M * N

· Array B berukuran / berorder : M * N


CROSS SECTION


Ø Cross Section dari array berdimensi dua adalah suatu himpunan yang anggotanya adalah elemen-elemen dalam satu baris saja atau satu kolom saja.

Ø Notasinya : *


Misal

Array B(1:M ;1:N) = {B(I,J)} ;

I = 1,2,3,……..,M dan

J = 1,2,3,…….,N

Maka suatu Cross Section :

B(5,*) = {B(5,1), B(5,2), B(5,3),………, B(5,N)}

B(*,5) = {B(1,5), B(2,5), B(3,5),………, B(M,5)}


TRANSPOSE


Ø Transpose dari suatu array berdimensi dua adalah menukar posisi indeksnya ( menukar posisi baris menjadi kolom atau kolom menjadi baris).

Ø Transpose suatu array dari B dinotasikan BT

Ø B adalah array dua dimensi, B(I,J) maka BT (J,I)

Ø A adalah array dua dimensi yang berorder M x N memepunyai transpose ( AT) N x M

ARRAY DIMENSI TIGA

Ø Banyaknya indeks yang diperlukan array dimensi tiga adalah 3

Ø Pada umumnya, suatu array berdimensi N memerlukan N indeks untuk setiap elemennya.

Ø Secara acak array berdimesi N ditulis sbb:

A(L1:U1, L2:U2, …….., LN:UN ) = (A(I1,I2,……,IN)) dengan LK <= IK<=UK , k = 1,2,3,…, N


Contoh :

Penyajian data mengenai jumlah mahsiswa Manajemen Informatika Universitas Gunadarma berdasarkan tingkat, untuk kelas pagi dan malam dan jenis kelamin.

Jawab :

MHS = nama array

I = 1,2,3,4,5 (tingkat 1/5)

J = 1,2 (1 = pagi; 2 = malam )

K = 1,2 (1 = pria; 2= wanita)

MHS (1:5, 1:2,1:2)


Jadi :

§ MHS(3,2,2)

jumlah mahasiswa tingkat 3 MI kelas malam untuk jenis kelamin wanita

§ Cross Section MHS (1,*,2)

jumlah mahasiswa tingkat 1 MI kelas pagi atau malam dan berjenis kelamin wanita.






MAPPING KE STORAGE DARI ARRAY


Skema penyajian dapat dievaluasi berdasarkan 4 karakteristik yaitu :

1. Kesederhanaan dari akses elemen

2. Mudah ditelusuri

3. Efisiensi dari utilitas storage

4. Mudah dikembangkan


ARRAY SATU DIMENSI


Misal:

Diberikan array dengan nama B yang mempunyai indeks 1 s/d N yaitu A(1:N). Cara untuk menyimpan array tersebut adalah sedemikian sehingga urutan secara fisik dari elemen-elemen adalah sama dengan urutan logik dari elemen.


Untuk mengetahui Address Awal ( Starting Address) dari elemen suatu array A(I) perlu diketahui :


1. Address Awal dari array yang bersangkutan

2. Ukuran dari masing-masing elemen array

Ø Address Awal dari array dinyatakan dengan notasi Address Awal yaitu

B ( Base Location)

Ø Masing-masing elemennya menggunakan ruang sebanyak S byte.

Ø Address awal dari elemen ke-I dari array A(1:N) adalah :

B + (I – 1 ) * S

Ø Address Awal yang mempunyai batas bawah tidak sama dengan satu ,elemen ke-I dari array A(L:U) adalah : B + ( I– L) * S


Misal :

A ( 1:7), address awal dari elemen A(5) adalah : B + ( 5 –1) * S

A ( 3:8), address awal dari elemen A(6) adalah : B + (6 - 3 ) * S

A (-3:4), address awal dari elemen A(2) adalah : B + (2 –(- 3) ) * S

ARRAY MULTI DIMENSI

Memori komputer linier, maka untuk memetakan array dimensi banyak ke storage harus dilinierkan.

Alternatif untuk pelinieran tersebut adalah :

q Row Major

Biasanya digunakan COBOL, PASCAL

Menyimpan pertama kali baris pertama dari array, kemudian baris kedua, ketiga dst

Array Rate ( 1:3 , 1:5)



1

2

3

4

5

1






2



Rate(2,3)



3







Menjadi

Rate(2,3)























Baris 1 Baris 2 Baris 3


Ø Array A(I,J) dari array yang didefinisikan sebagai array

A(L1:U1 , L2:U2), mempunyai

Address awal : B + (I – L1) * (U2 – L2 +1) * S + ( J – L2) * S

Contoh :

· Array A(1:3, 1:5) dan elemen A(2,3) mempunyai address awal :

B + (2-1) * (5-1+1) * S + (3-1) * S

B + 5 * S + 2 * S

B + 7 * S

· Array A(2:4, 3:5) dan elemen A(3,4) mempunyai address awal :

B + (3-2) * (5-3+1) * S + (4-3) * S

B + 1 * 3 * S + 1 * S

B + 4 * S

q Column Major


Biasanya digunakan FORTRAN

Menyimpan Kolom pertama dari array kemudian kolom kedua, ketiga, dst

Menjadi

Rate ( 2,3)
















Kolom 1 Kolom 2 Kolom 3 Kolom 4 Kolom 5



Ø Array A(I,J) dari array yang didefinisikan sebagai array

A(L1:U1 , L2:U2) mempunyai

Address awal : B + (J – L2) * (U1 – L1 +1) * S + ( I – L1) * S


Contoh :

· Array A(1:3, 1:5) dan elemen A(2,3) mempunyai address awal :

B + (3-1) * (3-1+1) * S + (2-1) * S

B + 6 * S + 1 * S

B + 7 * S

· Array A(2:4, 3:5) dan elemen A(3,4) mempunyai address awal :

B + (4-3) * (4-2+1) * S + (3-2) * S

B + 1 * 3 * S + 1 * S

B + 4 * S





ARRAY SEGITIGA (TRINGULAR ARRAY)


Ada 2 macam

1. Upper Tringular : Elemen dibawah diagonal utama adalah 0

2. Lower Tringular :Elemen diatas diagonal utama adalah 0


Ø Suatu array dimana elemen diagonalnya juga nol disebut Strictly (upper/lower) Tringular.

Ø Pada array Lower Tringular dengan N baris, jumlah maksimum elemen <> 0 pada baris ke-I adalah I

N

Ø Total elemen <> 0 adalah å I = ( N * ( N+1)) /2

K=1

Ø Untuk N kecil : tidak ada masalah

Ø Untuk N besar :

1. Elemen yang sama dengan nol tidak usah disimpan dalam memori

2. Pendekatan terhadap masalah ini adalah dengan pelinieran array dan hanya menyimpan array yang tidak nol.


1. Misal

A array segitiga atas berorder N x N

B array bersegitiga bawah dengan order ( N-1) x ( N-1)

A dan B dapat disimpan sebagai array C berorder N x N

C (I,J) = A(I,J) untuk I <= J

C(I+1,J) = B(I,J) untuk I >= J

2. Misal

A array segitiga atas berorder N x N

B array bersegitiga bawah dengan order N x N

A dan B dapat disimpan sebagai array C berorder N x ( N + 1 )

C (I,J+1) = A(I,J) untuk I <= J

C(I,J) = B(I,J) untuk I >= J

3. Misal

A dan B keduanya merupakan array segitiga atas

Maka untuk menyimpannya secara bersama-sama dengan melakukan transpose terhadap salah satu array tersebut.

Array C berorder N x (N+1)

C (I,J+1) = A(I,J) untuk I <= J

C(J,i) = B(I,J) untuk I >= J


SPARSE ARRAY


Ø Suatu type khusus yang lain dari array

Ø Dikatakan Sparse atau jarang karena elemen-elemen yang tidak nolnya relatif lebih sedikit jumlahnya

Ø Setiap elemen bukan nol pada sparse array dua dimensi dapat direpresentasikan dalam format (Row-Subscript, Column-subscript, value).

Ø Triple ini dapat diurut berdasarkan Row-Subscript Major dan Colum-Subscript Minor dan disimpan dalam bentuk vektor.

Ø Penyajian lain dari Sparse Array adalah dengan menggunakan daftar berkait/ Linked List.



STACK


q LINEAR LIST

¨ Linear list adalah suatu struktur data yang merupakan himpunan terurut dari satuan data atau dari record.

¨ Elemen yang terdapat dalam daftar disebut simpul/node.

¨ Daftar disebut Linear karena elemen nampak seperti baris, bahwa setiap simpul (kecuali simpul pertama dan terakhir) selalu memiliki elemen penerus langsung (suksesor) dan elemen pendahulu langsung (predesor).

¨ Misalnya didefinisikan suatu linear list A yang terdiri atas T buah elemen sebagai berikut :

A=[ a1,a2,……………, aT ]


Jika T = 0 , maka A dikatakan sebagai “Null List” (list hampa).

¨ Suatu elemen dapat dihapus (delete) dari sembarang posisi pada linear list .

¨ Suatu elemen baru dapat dimasukkan (insertion) kedalam list dan dapat menempati sembarang posisi pada list tersebut.

¨ Jadi suatu linear list dapat berkurang atau bertambah setiap saat

Contoh : file merupakan linier list yang elemen-elemennya berypa record.


q DEFINISI STACK

STACK adalah suatu bentuk khusus dari linear list di mana operasi penyisipan dan penghapusan atas elemen-elemennya hanya dapat dilakukan pada satu sisi saja yaitu posisi akhir dari list. Posisi ini disebut puncak atau disebut sebagai “TOP(S)”.

¨ Prinsip Stack adalah LIFO ( Last In First Out ) atau Terakhir masuk pertama keluar.

Setiap elemen tidak dapat dikeluarkan (POP keluar) sebelum semua elemen diatasnya dikeluarkan.

¨ Elemen teratas (puncak) dari stack dinotasikan sebagai TOP(S)

Misal diberikan stack S sebagai berikut :

S= [ S2,S2,………, ST ] è maka TOP(S) = ST

¨ Untuk menunjukkan jumlah elemen suatu stack digunakan notasi NOEL(S).

Dari stack diatas maka NOEL(S) = T.

NOEL(S) menghasilkan nilai integer.





Jika diberikan sebuah stack S = [A,B,C,D] maka stack S ini dapat digambarkan sebagai berikut :











A









B

D

C

C

TOP

D C B A

D

B

A

TOP



q OPERASI PADA STACK

1. CREATE (STACK)

2. ISEMPTY (STACK)

3. PUSH (ELEMEN, STACK)

4. POP (STACK)


Ø CREATE(S)

Operator ini berfungsi untuk membuat sebuah stack kosong (menjadi hampa) dan didefinisikan bahwa


NOEL (CREATE (S)) = 0 dan

TOP (CREATE(S)) = null / tidak terdefinisi


Ø ISEMPTY(S)

Operator ini berfungsi untuk menentukan apakah suatu stack adalah stack kosong (hampa) atau tidak . Operasinya akan bernilai boolean dengan definisi sebagai berikut :

ISEMPTY(S) = true, jika S adalah stack kosong atau NOEL(S) = 0

False, jika S bukan stack kosong atau NOEL(S) ¹ 0

Catatan : ISEMPTY(CREATE(S)) = true




Ø PUSH(E,S)

¨ Operator ini berfungsi untuk menambahkan satu elemen ke dalam stack . Notasi yang digunakan adalah PUSH(E,S)

Artinya : menambahkan elemen E ke dalam stack S

¨ Elemen yang baru masuk ini akan menempati posisi TOP jadi TOP(PUSH(E,S)) = E

¨ Akibat dari operasi ini jumlah elemen dalam stack akan bertambah, artinya NOEL (S) menjadi lebih besar atau stack menjadi tidak kosong (ISEMPTY(PUSH(E,S)) = false )


Ø POP(S)

¨ Operator ini berfungsi untuk mengeluarkan satu elemen dari dalam stack, notasinya POP(S)

¨ Elemen yang keluar dari dalam stack adalah elemen yang berada pada posisi TOP.

¨ Akibat dari operasi ini jumlah elemen stack akan berkurang atau NOEL(S) berkurang 1 dan elemen pada posisi TOP akan berubah.

¨ Operator ini tidak dapat digunakan pada stack kosong, artinya POP(CREATE(S)) = error condition dan

POP(PUSH(E,S)) = S

Catatan : TOP(PUSH(E,S)) = E



Queue

Adalah suatu bentuk khusus dari linear list dengan operasi penyisipan (insertion) hanya pada salah satu sisi ( Rear/ belakang) dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya (Front/ depan) dari list.


Antrean Q = [ Q1, Q2, Q3,……….., QT]

Front(Q) = bagian depan dari antrean Q

Rear(Q) = bagian belakang dari antrean Q

Noel(Q) = Jumlah elemen di dalam antrean ( berharga integer)

Jadi : Front(Q) = QT

Rear(Q) = Q1

Noel(Q) = T


Antrean beroperasi secara FIFO ( First In First Out) yang pertama masuk, yang pertama keluar.


q Operasi dasar pada Antrean :


1. CREATE(Q)

Operator untuk membentuk suatu antrean hampa

Q = [,…….,]

NOEL(CREATE(Q)) = 0

FRONT(CREATE(Q)) = tidak didefinisikan

REAR(CREATE(Q)) = tidak didefinisikan


2. ISEMPTY(Q)

Operator yang menentukan apakah antrean Q hampa atau tidak.

Operand dari operator ISEMPTY adalah antrean.

Hasilnya bertipe data Boolean

ISEMPTY(Q) =TRUE jika Q adalah antrean hampa (NOEL(Q) = 0)

FALSE jika Q bukan antrean kosong (NOEL(Q) ¹ 0)


3. INSERT(E,Q)

Operator yang menyisipkan elemen E ke dalam antrean Q

Catt : Elemen Q ditempatkan pada bagian belakang antrean dan antrean menjadi lebih panjang

Q = [ A, B, C, D]

REAR(INSERT(E,Q)) = E

FRONT(Q) = A

NOEL(Q) = 5

ISEMPTY(INSERT(E,Q)) = FALSE

4. REMOVE(Q)

Operator yang menghapus elemen bagian depan dari antrean Q dan antrean menjadi lebih pendek

Jika NOEL(Q) = 0 maka

REMOVE(Q) = ERROR ( UNDERFLOW)


q Penyajian dari antrean :

1. One way list

2. Array

q Menunjukkan bagaimana suatu antrean dalam array Queue dengan N elemen

1. Antrean mula-mula terdiri dari elemen AAA, BBB, CCC, DDD


AAA BBB CCC DDD ……….


1 2 3 4 5 6 7 8 9

FRONT(Q) = AAA : 1

REAR(Q) = DDD : 4


2. REMOVE(Q)



BBB CCC DDD ……….



1 2 3 4 5 6 7 8 9


FRONT(Q) = BBB : 2

REAR(Q) = DDD : 4


3. INSERT(EEE,Q)

BBB CCC DDD EEE …….. ………. N

1 2 3 4 5 6 7 8 9


FRONT(Q) = BBB : 2

REAR(Q) = EEE : 5

KESIMPULAN :

Untuk setiap kali penghapusan nilai FRONT bertambah

Untuk setiap kali penambahan nilai REAR akan bertambah


q Antrean yang disimpan dalam array dengan 5 lokasi memori sebagai array Sirkular.

1. Pada Awal Hampa

N ………. N

FRONT = 0 REAR = 0 1 2 3 4 5

2. A dan B dimasukkan

A B N ………. N

FRONT : 1

REAR : 2 1 2 3 4 5


3. C, D , dan E dimasukkan

A B C D E N ………. N

FRONT :1

REAR : 5

1 2 3 4 5


4. A, B, dan C dihapus

D E N ………. N

FRONT : 4

REAR :5

1 2 3 4 5


5. F dimasukkan

F D E N ………. N

FRONT : 4

REAR : 1


1 2 3 4 5


6. D dihapus

F E N ………. N

FRONT : 5

REAR :1

1 2 3 4 5


7. G dan H dimasukkan

F G H E N ………. N

FRONT : 5

REAR : 3

1 2 3 4 5


8. E dihapus

F G H N ………. N

FRONT :1

REAR : 3

1 2 3 4 5



Queue

Adalah suatu bentuk khusus dari linear list dengan operasi penyisipan (insertion) hanya pada salah satu sisi ( Rear/ belakang) dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya (Front/ depan) dari list.


Antrean Q = [ Q1, Q2, Q3,……….., QT]

Front(Q) = bagian depan dari antrean Q

Rear(Q) = bagian belakang dari antrean Q

Noel(Q) = Jumlah elemen di dalam antrean ( berharga integer)

Jadi : Front(Q) = QT

Rear(Q) = Q1

Noel(Q) = T


Antrean beroperasi secara FIFO ( First In First Out) yang pertama masuk, yang pertama keluar.


q Operasi dasar pada Antrean :


5. CREATE(Q)

Operator untuk membentuk suatu antrean hampa

Q = [,…….,]

NOEL(CREATE(Q)) = 0

FRONT(CREATE(Q)) = tidak didefinisikan

REAR(CREATE(Q)) = tidak didefinisikan


6. ISEMPTY(Q)

Operator yang menentukan apakah antrean Q hampa atau tidak.

Operand dari operator ISEMPTY adalah antrean.

Hasilnya bertipe data Boolean

ISEMPTY(Q) =TRUE jika Q adalah antrean hampa (NOEL(Q) = 0)

FALSE jika Q bukan antrean kosong (NOEL(Q) ¹ 0)


7. INSERT(E,Q)

Operator yang menyisipkan elemen E ke dalam antrean Q

Catt : Elemen Q ditempatkan pada bagian belakang antrean dan antrean menjadi lebih panjang

Q = [ A, B, C, D]

REAR(INSERT(E,Q)) = E

FRONT(Q) = A

NOEL(Q) = 5

ISEMPTY(INSERT(E,Q)) = FALSE

8. REMOVE(Q)

Operator yang menghapus elemen bagian depan dari antrean Q dan antrean menjadi lebih pendek

Jika NOEL(Q) = 0 maka

REMOVE(Q) = ERROR ( UNDERFLOW)


q Penyajian dari antrean :

9. One way list

10. Array

q Menunjukkan bagaimana suatu antrean dalam array Queue dengan N elemen

4. Antrean mula-mula terdiri dari elemen AAA, BBB, CCC, DDD


AAA BBB CCC DDD ……….


1 2 3 4 5 6 7 8 9

FRONT(Q) = AAA : 1

REAR(Q) = DDD : 4


5. REMOVE(Q)



BBB CCC DDD ……….



1 2 3 4 5 6 7 8 9


FRONT(Q) = BBB : 2

REAR(Q) = DDD : 4


6. INSERT(EEE,Q)

BBB CCC DDD EEE …….. ………. N

1 2 3 4 5 6 7 8 9


FRONT(Q) = BBB : 2

REAR(Q) = EEE : 5

KESIMPULAN :

Untuk setiap kali penghapusan nilai FRONT bertambah

Untuk setiap kali penambahan nilai REAR akan bertambah


q Antrean yang disimpan dalam array dengan 5 lokasi memori sebagai array Sirkular.

1. Pada Awal Hampa

N ………. N

FRONT = 0 REAR = 0 1 2 3 4 5

3. A dan B dimasukkan

A B N ………. N

FRONT : 1

REAR : 2 1 2 3 4 5


11. C, D , dan E dimasukkan

A B C D E N ………. N

FRONT :1

REAR : 5

1 2 3 4 5


12. A, B, dan C dihapus

D E N ………. N

FRONT : 4

REAR :5

1 2 3 4 5


13. F dimasukkan

F D E N ………. N

FRONT : 4

REAR : 1


1 2 3 4 5


14. D dihapus

F E N ………. N

FRONT : 5

REAR :1

1 2 3 4 5


15. G dan H dimasukkan

F G H E N ………. N

FRONT : 5

REAR : 3

1 2 3 4 5


16. E dihapus

F G H N ………. N

FRONT :1

REAR : 3

1 2 3 4 5


q ALGORITMA QINSERT

QINSERT(QUEUE, N, FRONT, DATA)

1. {Apakah antrean penuh}

Jika FRONT = 1 dan REAR = N atau Jika FRONT = REAR+1, maka Write : OVERFLOW, return.

2. Jika FRONT = NULL maka FRONT := 1, REAR := 1

Dalam hal ini

Jika FRONT = N maka REAR := 1

Dalam hal lain

REAR := REAR + 1

3. QUEUE(REAR) := DATA ( masukkan elemen baru)

4. Return


q ALGORITMA QDELETE

QDELETE(QUEUE, N, FRONT, REAR, DATA)

1. {Apakah antrean kosong}

Jika FRONT = NULL, maka Write : UNDERFLOW, return.

2. DATA := QUEUE(FRONT)

3. (FRONT mendapat nilai baru)

Jika FRONT =REAR maka FRONT := NULL

REAR := NULL

Dalam hal ini

Jika FRONT := N maka FRONT := 1

Dalam hal lain

FRONT := FRONT + 1

4. Return



LINK LIST


PENDAHULUAN

q Dalam suatu linier list kita dapat melakukan operasi penyisipan atau penghapusan atas elemen-elemennya pada sembarang posisi.

q Misalkan ada 1500 item yang merupakan elemen dari suatu linier list. Jika elemen ke-56 akan kita keluarkan, maka elemen ke-1 s/d elemen ke-55 tidak akan berubah posisinya pada linier list tersebut. Tetapi elemen ke–57akan menjadi elemen ke-56, elemen ke-58 akan menjadi elemen ke-57 dst. Selanjutnya, jika kita sisipkan satu elemen pada posisi setelah elemen ke-41, maka elemen ke-42 s/d elemen ke-1500 akan berubah posisinya.


q Untuk menyatakan keadaan diatas diperlukan suatu konsep yang berbeda dengan konsep sekuensial sebelumnya.

Linked list merupakan suatu cara non-sekuensial yang digunakan untuk merepresentasikan suatu data.


DEFINISI



q Linked list (one way list) adalah suatu kumpulan elemen data (yang disebut sebagai node) dimana urutannya ditentukan oleh suatu pointer.

q Setiap elemen (node) dari suatu linked list terdiri atas dua bagian, yaitu:

Ø INFO berisi informasi tentang elemne data yang bersangkutan.

Ø NEXT (link field/next pointer field), berisi alamat dari elemen (node) selanjutnya yang dituju.

Berikut ini sebuah contoh linked list yang terdiri atas 4 node:




Start


Info next info next info next info next

NULL

Node ke-1 node ke-2 node ke-3 node ke-4

Pada node ke-4 field NEXT–nya berisi NULL , artinya node ke-4 tsb adalah node terakhir.


q Node-node dalam linked list tidak harus selalu digambarkan paralel seperti pada gambar diatas. Linked list pada contoh diatas dapat pula digambarkan seperti berikut ini:


Info next

Info next

null

Info next

Info next





CATATAN :

Ø Ada dua hal yang menjadi kerugian dengan representasi suatu data dengan linked list ini,

yaitu:

1. Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.

2. Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked list.

Ø Sedangkan keuntungannya adalah :

1. Jenis data yang berbeda dapat di-link

2. Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah pointer-nya saja .

OPERASI DASAR PADA LINKED LIST


q Ada beberapa aturan yang didefinisikan pada operasi didalam linked list yaitu:

Ø Jika P adalah suatu variabel pointer, maka nilainya adalah alamat atau lokasi dari variabel lain yang dituju.

Ø Operasi yang didefinisikan pada suatu variabel pointer adalah:

1. Test apakah sama dengan NULL

2. Test untuk kesamaan denganvariabel pointer lain

3. Menetapkan sama dengan NULL

4. Menetapkan menuju ke node lain

q Notasi yang didefinisikan sehubungan dengan operasi diatas adalah

  1. NODE (P), artinya node yang ditunjuk oleh pointer P
  2. INFO (P), artinya nilai INFO dari node yang ditunjuk pointer P
  3. NEXT (P), artinya hubungan (link) selanjutnya dari node yang ditunjuk oleh pointer P


Sebagai contoh, perhatikan linked list dibawah ini:

Info next




A

start Info next info next

C

node ke-2

node ke-1

P

node ke-3




null

D

Info next

Node ke-4




NODE (P) = node yang ditunuk oleh P yaitu node pertama

INFO (P) = A

NEXT (P) = node kedua

INFO (NEXT(NEXT(P))) = C


MENGHAPUS SUATU NODE DARI LINKED LIST (REMOVE)

q Untuk menghapus node dalam linked list digunakan procedure FREENODE.

q Jika Q adalah suatu variabel pointer, maka FREENODE (Q) akan menyebabkan node yang ditunjuk oleh variabel poinnter Q dihapus dalam linked list.


Perhatikan linked list berikut :

Ø Langkah ke-1 :

Q := Next (P)


Info next info next info next



















P Q


Info next

…….










Ø Langkah ke-2 :

Next (P) := Next (Q)

Info next

















Info next info next info next

























Ø Langkah ke-3 :

Freenode (Q)

Procedure Freenode (Q)

(a) Next (Q) := Avail

(b) Info (Q) := Null

(c) Avail := Q


MENYISIPKAN SUATU NODE KEDALAM LINKED LIST

q Untuk menyisipkan node dalam linked list digunakan procedure GETNODE

q Jika NEW adalah suatu variabel pointer, maka GETNODE (NEW) akan menyebabkan node yang ditunjuk oleh variabel pointer NEW disisipkan kedalam linked list.

Perhatikan linked list berikut:

Procedure Getnode (NEW)

If Avail = Null

Then out-of-free-space

(a) else begin

Getnode := Avail

(b) Avail := Next (Avail)

(c) Next (Getnode) := Null;

End;


q Algoritma menyisipkan sebuah node :

(a) Getnode (NEW)

(b) Info (NEW) := Name;

(c) Q := Next (P)

(d) Next (P) := NEW

(e) Next (NEW) := Q

0 komentar:

Posting Komentar

jangan lupa tinggalkan pesan y.....okay
Twitter Delicious Facebook Digg Stumbleupon Favorites More