Single Linked List Yuliana Setiowati, S.Kom.

Slides:



Advertisements
Presentasi serupa
Double Linked List.
Advertisements

Dr. Anto Satriyo Nugroho, M.Eng
Single linked list.
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
LINKED LIST.
MODUL KULIAH STRUKTUR DATA TANGGAL REVISI TANGGAL BERLAKU KODE DOKUMEN :::::: September Session 8 Edited By Al-Bahra. L.B, S. Kom, M.
LINKED LIST.
Pointer. Output? #include int x = 2; void misteri(int a, int b) { a = 2*x; b = y; y = a; } main() { int y; x = 5; y = 7; misteri(x, y); printf("%d %d\n",
CARA MEMBUAT SINGLE LINKED LIST DENGAN BORLAND C++
Pertemuan 2 STRUKTUR DATA LINKED LIST
Mata Kuliah : Struktur Data Pertemuan : V
LINKED LIST Single Linked List.
LINKED LIST.
Linked List Pembuatan Simpul Awal.
LINK LIST Latifah Rifani.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
Single Linked List.
Queue.
Algoritma dan Struktur Data
Algoritma & Struktur Data Pointer Evangs Mailoa.
STRUKTUR DATA (6) single linked list non circular
Operasi pada pohon biner
Alokasi Memori Yuliana Setiowati.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
Algoritma & Struktur Data Linked List Evangs Mailoa.
Linked List DELETE 6.3 & 7.3 NESTED LOOP.
LINKED LIST by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
Linear Data Structures (Linked List). Node Link atau pointer data field.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Pertemuan ketujuh Struktur data st3telkom.ac.id
Algoritma dan Struktur Data
Struktur Data List Linear : Linked List (Single Linkedlist)
POINTER.
LINKED LIST.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Struktur Data (Data Structure) – IS 2313
Algoritma dan Struktur Data
1 Pertemuan 3 Data Komposit Linked list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Algoritma dan Struktur Data
Pertemuan 9 Stack dengan Linked-list
Double linked list non circular
Struktur Data Linked List
STRUKTUR DATA (2) Single Linked List
STRUKTUR DATA Linked List Oleh : Yuli Praptomo PHS, S.Kom.
8. Singly Linear Linked List
LINKED LIST by Yohana N.
Single Linked List.
REPRESENTASI FISIK LIST LINEAR
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Struktur Data – Pertemuan 4 List Linier
Doubel Linked List.
Algoritme dan Stuktur Data
STRUKTUR DATA (7) single linked list circular
Linked List 6.3 & 7.3 NESTED LOOP.
Doubel Linked List.
Single Linked List Circular (SLLC)
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
LINKED LIST by Yohana N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked-lis...
STRUKTUR DATA (8.2) double linked list circular
Double Linked List.
Variable Static & Linked List
Algoritma dan Struktur Data
SINGLE LINKED LIST (SLL)
Transcript presentasi:

Single Linked List Yuliana Setiowati, S.Kom

Linked List tom p1 macao 10 mary p2 taipa 14 john p3 macao 22 ann p4 18 Misalnya kita buat banyak record student sebagai variabel dinamik, kita perlu mengorganisasi data kita, supaya efisien

Linked List p1 tom macao 10 mary taipa 14 john macao 22 ann macao 18 Salah satu cara adalah menghubungkan semua record student dengan pointer

Linked List Single linked list atau linked list Tiap elemen terdiri dari dua bagian, yaitu sebuah data dan sebuah pointer yang disebut dengan pointer next.

Linked List linked list terpencar-pencar di memori Pointer dari elemen ke elemen berarti sebagai penjamin bahwa semua elemen dapat diakses.

Representasi Simpul struct node{ int info ; struct node *next ; } ; typedef struct node *NODEPTR; NODEPTR head , tail ;

Linked List b c struct Node { char data; Node *next; }; Node *head;

Linked List b c struct Node { char data; Node *next; }; Node *head; head->data head->next->data head b c head->next->next struct Node { char data; Node *next; }; Node *head; head->next

Linked List b c Pointer berikutnya dari node paling akhir = NULL p=head->next; p->next p head b c p->data Pointer berikutnya dari node paling akhir = NULL Node pertama ditunjuk oleh pointer yang disebut head

linked list kosong head Linked List yang masih kosong dinyatakan dengan pointer head = NULL. Ingat bahwa head menunjuk ke node pertama linked list. Jika list kosong node pertama tidak ada head

Contoh ? ? ? #include <stdlib.h> struct Node { char data; Node *next; }; int main ( ) { Node *head; Node *p; p = (Node*) malloc(sizeof(Node)); p->data = 'a'; (A) head = p; (B) p->data = 'b'; (C) … p (A) a ? head p (B) a ? head p (C) a ? head b

Contoh ? ? ? … (C) head->next = p; (D) p = (Node*) malloc(sizeof(Node)); p->data = 'c'; (E) head->next->next = p; p->next = NULL; (F) … } p (C) a ? head b p (D) a head b ? p (E) a head b ? c p (F) a head b c

Latihan Gambar diagramnya ! … int main ( ) { Node *head = NULL; Node *p; p = (Node*) malloc(sizeof(Node)); p ->data = 'a'; (A) p->next = (Node*) malloc(sizeof(Node)); p->next->data = 'b'; p->next->next = NULL; (B) head = (Node*) malloc(sizeof(Node)); head->data = 'c'; head->next = p; (C) }

Alokasi Simpul NODEPTR getnode(int d){ NODEPTR p ; p = (NODEPTR) malloc(sizeof(struct node)); p->info = d ; p->next = NULL ; return(p); }

Membebaskan memori void free_node(NODEPTR p) { free(p); p = NULL ; }

Penelurusan linked list , 1 b c head p p p Pointer p menunjuk ke node saat ini. Setelah pemrosesan, p menunjuk ke node berikutnya p = p->next;

Penelurusan linked list, 2 b c head Dimulai dari node pertama (ditunjuk oleh head) Lakukan looping sampai p menunjuk ke NULL p = head; while (p!=NULL) { printf("%c", p->data); p = p->next; } p = head; while (p) { … p = p->next; } Pastikan program menangani linked list kosong

Operasi pada Linked List menambahkan node (insert) menghapus node (delete).

Operasi Insert insert sebagai node awal (head) dari linked list insert setelah node tertentu insert sebelum node tertentu insert sebagai node akhir (tail) dari linked list

Insert sebagai node awal (head) dari linked list void insertashead(NODEPTR insert) { insert->next=head; head = insert; } Kondisi Awal 1 2 2 1

Insert sebagai node akhir (tail) Kondisi Awal void insertastail(NODEPTR insert) { if (head==NULL){ head = insert ; tail = head ; } else { tail->next = insert ; tail = tail->next ; 1 2 1 2

Insert sebagai node akhir (tail) Kondisi Awal 1 1. tail->next = insert ; 2. tail = tail->next ; 2

Insert setelah node tertentu void insertafternode(int x, NODEPTR insert) { NODEPTR after ; after = head; while (after->info != x) after = after->next; insert->next = after->next; after->next = insert; }

1 2

3 4

Insert sebelum node tertentu void insertbeforenode(int x, NODEPTR insert) { NODEPTR before, prevbefore; if (head->info == x) insertashead(insert); else { before = head; do { prevbefore = before; before = before->next; }while (before->info != x); insert->next = before; prevbefore->next = insert; } Jika data yang dicari berada pada awal Linked List Jika data yang dicari tidak berada pada awal Linked List

1 2

3 4

Operasi Delete delete sebagai simpul pertama(head) dari linked list   delete pada simpul tertentu   delete simpul terakhir

Penghapusan Node Pertama Pointer first diarahkan pada data ke-2 Pointer p diarahkan pada data ke-1 Bebaskan pointer p (secara otomatis data ke-1 terhapus)

Penghapusan Node Pertama

Penghapusan Simpul Terakhir Telusuri simpul s/d first->next = NULL Arahkan pointer p ke first Bebaskan pointer p->next (Simpul Terakhir) Arahkan p->next ke NULL

Penghapusan pada Node Tertentu – Data di Tengah 4 first 1 3 2 p

jika data yang akan dihapus berada pada awal Linked List void del_node(int data) { NODEPTR del, beforedel ; del = head ; beforedel = del ; if (del->info == data ) { if (del->next == NULL) { head = NULL ; free_node(del); } else { head = head -> next ; jika data yang akan dihapus berada pada awal Linked List jika data yang akan dihapus berada pada awal Linked List dan hanya ada satu data jika data yang akan dihapus berada pada awal Linked List dan Linked List lebih dari satu data

else { while(del->info != data) { beforedel = del ; del=del->next; } if (del->next == NULL) beforedel->next=NULL; free_node(del); beforedel->next = del->next; jika data yang akan dihapus bukan pada awal Linked List untuk mencari data yang akan dihapus Jika data yg akan dihapus pada akhir Linked List Jika data yg akan dihapus bukan pada akhir Linked List