Anda di halaman 1dari 26

STRUKTUR DATA

LIST LINEAR

OZ Z I

S U R I A ,

S .T. ,

M .T.

;

A R I TA

W I TA N T I

S .T, . M.T

Array & Linked List

Array & Linked List masing-masing digunakan untuk menyimpan data secara berurutan. Perbedaan mendasar antara Array dan Linked List adalah:

Pembeda

Array

Linked List

Penggunaan Memori

Statis

Dinamis

Alokasi Memori

Didefinisikan di awal sesuai jumlah data yang akan disimpan (jika berlebihan maka boros memori)

Didefinisikan ketika dibutuhkan

Alamat di Memori

Kontigu (blok-blok memori berurutan)

Tidak Kontigu (acak, menggunakan alamat mana saja yang tersedia)

Ilustrasi Array

Array memiliki indeks. Alamat memori dari setiap data letaknya berurutan

 

11

13

 

7

2

64

 

0

1

2

3

4

5

Proses Insert

 

Insert 31

 
 
 

11

13

 

7

2

64

     

11

13

7

2

64

 

0

1

2

3

4

5

0

1

2

3

4

5

 

(a)

(b)

 
 

31

11

13

7

2

64

 

0

1

2

3

4

5

(c)

Linked List

Linked List terdiri dari elemen-elemen yang disebut sebagai simpul / Node.

Setiap Node pada Linked List terdiri dari 2 bagian, yaitu bagian data dan

bagian pointer yang menyimpan alamat Node berikutnya.

Ilustrasi Node

yaitu bagian data dan bagian pointer yang menyimpan alamat Node berikutnya. Ilustrasi Node Bagian Pointer Data
yaitu bagian data dan bagian pointer yang menyimpan alamat Node berikutnya. Ilustrasi Node Bagian Pointer Data
yaitu bagian data dan bagian pointer yang menyimpan alamat Node berikutnya. Ilustrasi Node Bagian Pointer Data
yaitu bagian data dan bagian pointer yang menyimpan alamat Node berikutnya. Ilustrasi Node Bagian Pointer Data
yaitu bagian data dan bagian pointer yang menyimpan alamat Node berikutnya. Ilustrasi Node Bagian Pointer Data

Bagian Pointer Data

Ilustrasi Linked List

FIRST

LAST

31 11 13 7 2 64 NULL
31
11
13
7
2
64 NULL

Implementasi Linked List

Dalam C, linked list dibuat dengan cara mengalokasikan memori (malloc) (lihat di kode).

Bila data tersebut tidak digunakan lagi maka dilakukan proses dealokasi

memori (mengosongkan memori).

Operasi Linked List

Inisialiasi menginisialiasi list Penyisipan Data

Insert First Penambahan node data dilakukan di paling depan.

Insert After Penambahan node data dilakukan di tengah.

Insert Last Penambahan node data dilakukan di belakang.

Penghapusan Data

Del First Penghapusan node pertama.

Del After Penghapusan node di tengah.

Del Last Penghapusan node paling akhir.

Show List menampilkan data di dalam List.

Penyisipan Data

31 11 13 7 NULL (a) 5 Insert Node 5 di antara Node 11 dan
31
11
13
7
NULL
(a)
5
Insert Node 5 di antara Node 11 dan Node 13
31
11
13
7
NULL

Alokasikan memori untuk membuat Node 5,

(b)
(b)
5
5

Arahkan pointer node 5 ke alamat node 13.

31 11 13 7 NULL (c) Arahkan pointer node 11 ke alamat node 5. 5
31
11
13
7
NULL
(c)
Arahkan pointer node 11 ke alamat node 5.
5

Penghapusan Data

31 11 13 7 NULL (a) Hapus Node 13 13 7 NULL 31 11 (b)
31
11
13
7
NULL
(a) Hapus Node 13
13
7
NULL
31
11
(b) Arahkan pointer node 11 ke

alamat node 7.

13

31 11 (b) Arahkan pointer node 11 ke alamat node 7. 13 NULL NULL 31 11
NULL NULL
NULL
NULL
31 11 7
31
11
7

(c) Arahkan pointer node 13 ke NULL, Dealokasikan Node 13.

Latihan

Pada latihan ini, cobalah membuat ilustrasi operasi-operasi Linked List!

Terdapat 5 data bertipe float sebanyak 5 data: {2.1, 4.4, 9.1, 3.9, dan 5.0).

Buatlah:

1.

Ilustrasi urutan data tersebut dalam Linked List

2.

Ilustrasi untuk menambahkan node 6.2 di paling depan! (InsertFirst).

3.

Ilustrasi untuk menambahkan node 7.5 di paling belakang! (InsertLast).

4.

Ilustrasi untuk menambahkan node 8.1 di tengah! (InsertAfter)

5.

Ilustrasi untuk menghapus node 3.9! (DelAfter)

6.

Ilustrasi untuk menghapus node 6.2! (DelFirst)

7.

Ilustrasi untuk menghapus node 7.5! (DelLast)

Struct Linked List

Membuat ADT ‘typeintuntuk menyimpan data integer.

Membuat struct Node dan List. Node berisi data

(tipe ADT ’typeintdan pointer Next.

Struct List berisi pointer First.

#include <stdio.h>

#include <stdlib.h>

#include <stdbool.h>

typedef int typeint;

typedef struct tNode *address;

typedef struct tNode

{

typeint value;

address Next;

}Node;

typedef struct{

address First;

}List;

Inisialisasi (CreateEmpty)

Menginisialisasi alamat pointer First ke NULL dalam List. Ilustrasi:

void CreateEmpty(List *L)

{

(*L).First=NULL;

}

L.First NULL
L.First
NULL

isEmpty

Untuk mengecek apakah list kosong atau tidak.

bool isEmpty(List L)

{

 

if(L.First==NULL)

return true;

else

return false;

}

Alokasi

Untuk mengalokasikan memori sesuai dengan data yang mau disimpan ke dalam List.

address alokasi(typeint x){

address P=(Node*)malloc(sizeof(Node));

if(P!=NULL){

P->value=x;

P->Next=NULL;

}

return P;

}

Dealokasi

Untuk membebaskan memori dari data.

void dealokasi(address P){ free(P);

}

Insert First & InsertValueFirst

Fungsi InsertValueFirst mengalokasikan memori untuk data, kemudian memanggil fungsi

InsertFirst untuk menyisipkan data

ke dalam List.

void InsertFirst(List

*L, address P)

{

P->Next=(*L).First;

(*L).First=P;

}

void InsertValueFirst(List *L, typeint x)

{

address

P=alokasi(x);

InsertFirst(L,P);

printf("Berhasil memasukkan data!");

}

Delete First

Untuk menghapus node pertama dalam List.

void DelFirst(List *L)

{

if(!isEmpty(*L)){ address P=(*L).First;

(*L).First=(*L).First->Next;

free(P); printf("Del First Berhasil!");

}else{

printf("List Empty!");

}

}

Show List

Untuk menampilkan semua data yang ada di dalam List.

void ShowList(List L){ address P; P=L.First; if(!isEmpty(L)){ do{

printf("%d ", P->value); P=P->Next; }while(P!=NULL);

}else{

printf("List Empty!");

}

}

Insert Last

Untuk menyisipkan data di node paling akhir dalam List.

void InsertLast(List *L, typeint x)

{

address P;

address

Ptr=alokasi(x);

P=(*L).First;

if(!isEmpty(*L)){

while(P-

>Next!=NULL){

P=P-

>Next;

}

P->Next=Ptr;

printf("Berhasil memasukkan data!");

}else{

InsertFirst(L,

Ptr);

printf("Berhasil memasukkan data!");

}

}

Delete Last

Untuk menghapus node data paling akhir dalam List.

Delete Last Untuk menghapus node data paling akhir dalam List.

Insert After

Untuk menyisipkan node data di antara data yang ada di dalam List.

Insert After Untuk menyisipkan node data di antara data yang ada di dalam List.

Delete After

Untuk menghapus data yang terletak di antara data yang ada di dalam List.

Delete After Untuk menghapus data yang terletak di antara data yang ada di dalam List.

Main Function

Main Function

Main Function

Main Function

Referensi

Bambangwirawan, Paulus. 2004. Struktur Data dengan C. Yogyakarta: Penerbit Andi.

Deitel, Paul, Deitel, Harvey. 2014. C++ How to Program - Ninth Edition. Harlow: Pearson

Education Limited.

Kadir, Abdul. 2003. Pemrograman C++. Yogyakarta: Penerbit Andi.

Munir, Rinaldi. 2009. Algoritma Pemrograman dalam Bahasa Pascal dan C. Bandung: Penerbit INFORMATIKA.

Rahmat C., Antonius. 2010. Algoritma dan Pemrograman dengan Bahasa C - Konsep, Teori, dan

Implementasi. Yogyakarta: Penerbit Andi.

Suarga. 2012. Algoritma dan Pemrograman. Yogyakarta: Penerbit Andi.