linked list

52
linked list Pertemuan keempat Struktur data st3telkom.ac.id Senarai berantai by : tenia wahyuningrum

Upload: tenia-wahyuningrum

Post on 02-Jul-2015

230 views

Category:

Data & Analytics


1 download

DESCRIPTION

membahas tentang senarai berantai beserta operasinya

TRANSCRIPT

Page 1: Linked list

linked listPertemuan keempat

Struktur data

st3telkom.ac.id

Senarai

berantai

by : tenia wahyuningrum

Page 2: Linked list

Senarai berantai

Dalam pemakaian sehari-hari istilah

senarai berantai (list) adalah

kumpulan linier sejumlah data.

Page 3: Linked list

Daftar

belanja

Ada yang

dihapusjika barang

telah dibeli

atau

ditambahkan barang

baru yang akan

dibeli.

Page 4: Linked list

Keunggulan :

kemudahan dan efektifitas kerja

yang lebih baik dalam hal

menambah, mengurangi, serta

mencari suatu elemen/node yang

terdapat dalam senarai.

Page 5: Linked list

“Elemen-elemen yang terdapat pada

sebuah senarai berantai tersimpan

dalam blok memori terpisah”

Page 6: Linked list

“Penambahan,

pengurangan, ataupun

penggantian node

dapat dilakukan

dengan

mengubahelemen rujukan atas

tiap-tiap node yang

terkait”

Page 7: Linked list

“Kerugiannya, sebuah senarai

berantai tidak memungkinkan

pengaksesan elemen secara

acak”

Page 8: Linked list

Jenis-jenis

senarai berantai

Page 9: Linked list

Senarai Tunggal

Bila struktur data sebuah node hanya memiliki satu tautanatas node berikutnya dalam sebuah senarai, maka senaraitersebut dinamakan sebagai senarai tunggal.

Page 10: Linked list

Senarai Ganda

Berbeda halnya dengan senarai tunggal, padasenarai ganda, struktur data atas tiap-tiap node memiliki rujukan pada node sebelum danberikutnya. Sebagian algoritma membutuhkantaut ganda, contohnya sorting dan reverse traversing.

Page 11: Linked list

Pada dua jenis senarai sebelumnya, node terakhirdalam senarai tersebut merujuk pada null yang artinyaakhir dari sebuah senarai, begitu pula null sebagairujukan node sebelumnya pada node pertama bilasenarai yang dimaksudkan adalah senarai ganda. Padasenarai sirkular, informasi rujukan pada node terakhirakan merujuk pada node pertama, dan rujukan padanode pertama akan merujuk pada node terakhir bilayang digunakan sebagai dasar implementasi adalahsenarai ganda.

Page 12: Linked list

info

9

next

node

Menunjuk ke

node lain

Page 13: Linked list

Contoh senarai berantai dengan 6 simpul :

Awal

A B C D E F

Medan informasi dari simpul kedua

Medan penyambung dari simpul kedua

Page 14: Linked list

2

C 5

A 6

D 10

B 1

F 0

E 8

INFO SAMBUNGAN

2

1

3

4

5

6

7

8

9

10

Awal

Habis

Page 15: Linked list
Page 16: Linked list
Page 17: Linked list

typedef struct node *list;

struct node {

int datalist;

struct node *next;

};

Representasi Simpul (Node)

Membuat tipe data baru (tipe data bentukan)

Page 18: Linked list

dilanjutkan dengan deklarasi dari pointer kestruktur di atas sebagai berikut:

struct node *head;

atau

list head

Page 19: Linked list

Mengalokasikan node

int allocate_node(int data, list *new)

{

new = (list) malloc (sizeof(node));

if(new==NULL)

return 0;

new->datalist = data;

new->next=NULL;

return 1;

}

/* Perintah “malloc” merupakah perintah “memory allocation”. Perintah ini berfungsi mengalokasikan suatu alamat padamemory pada sebuah variabel*/

Page 20: Linked list

Untuk inisialisasi list setelah alokasi untuknode pertama maka ditambahkan statement

sebagai berikut:

head = new

Page 21: Linked list

Ilustrasi fungsi allocate_node

Page 22: Linked list

Untuk inisialisasi list setelah alokasi untuk node pertama ilustrasinya adalah sebagai berikut

Page 23: Linked list

operasi

senarai berantai

Page 24: Linked list

insert

Fungsi insert pada linked list meliputi :

- insert sebagai node awal (head) dari linked list

- insert setelah node tertentu

- insert sebelum node tertentu

- insert sebagai node akhir (tail) dari linked list

Page 25: Linked list

Insert sebagai node awal (head) darilinked list

void insertashead(list insert)

{

insert->next=head;

head = insert;

}

Page 26: Linked list

ilustrasi dari fungsi diatas adalahsebagai berikut:

Page 27: Linked list

Insert setelah node tertentu

void insertafternode(int x, list insert)

{

list after;

after = head;

do

after = after->next;

while (after->datalist != x);

insert->next = after->next;

after->next = insert;

}

Page 28: Linked list
Page 29: Linked list
Page 30: Linked list

Langkah-langkah untuk proses di atas adalahsebagai berikut:

1. Pointer next dari elemen baru menunjukelemen setelah elemen tertentu

2. Pointer next elemen sebelumnya menunjukke elemen baru

Page 31: Linked list

Insert sebelum node tertentu

void insertbeforenode(int x, list insert)

{

list before, prevbefore;

if (head->datalist = x)

insertashead(insert)

else

{

before = head;

do

prevbefore = before;

before = before->next;

while (before->datalist != x);

insert->next = before;

prevbefore->next = insert;

} }

Page 32: Linked list
Page 33: Linked list
Page 34: Linked list

Langkah-langkah untuk proses di atas adalahsebagai berikut:

1. Telusuri list sampai elemen tertentu, catatjuga elemen sebelumnya

2. Lakukan penyisipan sebelum elemen tertentutersebut

Page 35: Linked list

Insert di akhir (tail) dari linked list

void insertastail(list insert)

{

list tail;

tail = head;

do

tail = tail->next;

while (tail->next != NULL);

tail->next = insert;

tail = tail->next;

}

Page 36: Linked list
Page 37: Linked list
Page 38: Linked list

Langkah-langkah untuk proses di atas adalahsebagai berikut:

1. Telusuri list sampai elemen terakhir (tail->next=NULL)

2. Lakukan pentisipan setelah elemen terakhir

Page 39: Linked list

Delete

Fungsi delete pada linked list meliputi :

- delete sebagai simpul pertama(head) darilinked list

- delete setelah simpul tertentu

- delete simpul terakhir

Page 40: Linked list

delete sebagai simpul pertama

(head) dari linked list

Page 41: Linked list
Page 42: Linked list

Langkah-langkah untuk proses di atas adalahsebagai berikut:

1. Pointer first diarahkan pada data ke-2

2. Pointer p diarahkan pada data ke-1

3. Bebaskan pointer p (secara otomatis data ke-1 terhapus)

Page 43: Linked list

delete setelah simpul tertentu

Page 44: Linked list
Page 45: Linked list

Langkah-langkah untuk proses di atas adalahsebagai berikut:

1. Arahkan pointer first s/d data yang ditunjuk

2. Pointer p diarahkan pada first->next

3. Arahkan pointer first->next pada p->next

4. Bebaskan pointer p (secara otomatis data setelah simpul tertentu terhapus)

Page 46: Linked list

delete simpul terakhir

Page 47: Linked list
Page 48: Linked list

Langkah-langkah untuk proses di atas adalahsebagai berikut:

1. Telusuri simpul s/d first->next = NULL

2. Arahkan pointer p ke first

3. Bebaskan pointer p->next (Simpul Terakhir)

4. Arahkan p->next ke NULL

Page 49: Linked list

Latihan

soal

Page 50: Linked list

TuliskanOutputnya!

Page 51: Linked list

TuliskanOutputnya!

Page 52: Linked list

selesaioktober-2014