Pertemuan 2 STRUKTUR DATA LINKED LIST

Slides:



Advertisements
Presentasi serupa
Stack, Larik dan Pointer
Advertisements

Double Linked List.
Single linked list.
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
MODUL KULIAH STRUKTUR DATA TANGGAL REVISI TANGGAL BERLAKU KODE DOKUMEN :::::: September Session 8 Edited By Al-Bahra. L.B, S. Kom, M.
LINKED LIST.
CARA MEMBUAT SINGLE LINKED LIST DENGAN BORLAND C++
Linked List dan Double Linked List
LINKED LIST (List linier)
Mata Kuliah : Struktur Data Pertemuan : V
LINKED LIST Single Linked List.
LINKED LIST.
Linked List Pembuatan Simpul Awal.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
Linked List Entin Martiana.
Queue.
Algoritma & Struktur Data Pointer Evangs Mailoa.
STRUKTUR DATA (6) single linked list non circular
Operasi pada pohon biner
Single Linked List Yuliana Setiowati, S.Kom.
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 by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Pertemuan ketujuh Struktur data st3telkom.ac.id
Tenia Wahyuningrum, S.Kom. MT
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
1 Pertemuan 26 Teknik Hashing Matakuliah: T0016/Algoritma dan Pemrograman Tahun: 2005 Versi: versi 2.
Algoritma dan Struktur Data
1 Pertemuan 3 Data Komposit Linked list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Algoritma dan Struktur Data
LINK LIST “Suatu cara menyimpan data dengan terstruktur sehingga programmer dapat secara otomatis menciptakan suatu tempat baru didalam memori komputer.
Pertemuan 9 Stack dengan Linked-list
SENARAI BERANTAI TUNGGAL
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.
Single Linked List.
STRUKTUR DATA QUIZ.
Algoritma dan Struktur Data
Struktur Data – Pertemuan 4 List Linier
Doubel Linked List.
Stack.
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.
STACK (TUMPUKAN) Stack atau tumpukan didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan dan pengambilan elemen melalui.
IMPLEMENTASI LINKED LISTMENGGUNAKAN ARRAY
STRUKTUR DATA (8.2) double linked list circular
Double Linked List.
LINKED LIST MELINGKAR Linked List melingkar (circular) adalah linked list linier biasa dimana pointer pada node terakhir diarahkan kembali ke node pertama.
Variable Static & Linked List
Algoritma dan Struktur Data
Defri Kurniawan DOUBLE LINKED LIST Defri Kurniawan
SINGLE LINKED LIST (SLL)
Transcript presentasi:

Pertemuan 2 STRUKTUR DATA LINKED LIST Endang Purnama Giri, M.Kom. Annisa, M.Kom. Departemen Ilmu Komputer FMIPA-IPB 2010 Pertemuan 2 STRUKTUR DATA LINKED LIST

Linked List Suatu untaian atau rangkaian berantai dari node-node yang disusun dengan menggunakan pointer Masing-masing node merupakan suatu record yang terdiri dari dua bagian, yaitu : Bagian isi/informasi Bagian pointer (untuk menunjuk ke node berikutnya) informasi pointer

Linked List Linked List memiliki sebuah pointer untuk menunjuk node awalnya. Awal A B C D Node terakhir pada linked list memiliki nilai null pada bagian pointernya. Node-node didalam linked list dapat ditambah (dialokasikan) dan dapat dihapus (didealokasikan) Kapasitas penyimpanan struktur linked list tidak terbatas (dinamis) tergantung kapasitas memorinya

DEKLARASI NODE LINKED LIST Pada C Deklarasi sebuah node dapat dilakukan dengan Struct node{ int data; struct node *selanjutnya; } typedef struct node node

OPERASI LINKED LIST Bentuk operasi pada linked list meliputi Penambahan data Penghapusan data Pengaksesan data Update data

OPERASI Penambahan Data PADA LINKED LIST

Membuat linked list 1. Mendeklarasikan record/struct sebagai node 2. Mendeklarasikan pointer bantuan Struct node{ int data; struct node *next; }typedef struct node node; node awal, akhir, baru; awal akhir baru

PENAMBAHAN DATA BARU Operasi penambahan data baru pada linked list dapat memiliki 3 mode Di awal list Di antara data yang lain Di akhir list

PENAMBAHAN DATA DI AWAL Node yang akan di masukan harus di alokasikan terlebih dahulu pada memory baru=malloc(sizeof node); baru

PENAMBAHAN DATA DI AWAL Node pertama pada sebuah linked list pada umumnya ditunjuk oleh suatu pointer bantuan (head/awal) Ketika sebuah data (node) baru akan dimasukan pada linked list kondisi linked list bisa kosong ataupun sudah ada isinya Jika linked list masih kosong, bentuk linked list dan tunjuk node yang pertama sebagai awal linked list If awal == null { awal = baru;akhir=baru} Jika linked list tidak kosong, masukkan node selanjutnya else {baru->next=awal;awal=baru;} baru awal akhir akhir awal baru

ILUSTRASI PENAMBAHAN DI AWAL

Fungsi Penambahan di awal void insertAwal(int dataBaru, node *awal){ node *baru; baru=malloc(sizeof(node)); baru->data=dataBaru; if (awal==NULL){ awal=baru; akhir=baru; awal->next=NULL; } else { baru->next=awal;

PENAMBAHAN DATA DI AKHIR Ilustrasi Penambahan di Akhir Selain di bagian awal pada bagian akhir list pada umumnya ditunjuk suatu pointer (tail/akhir)

FUNGSI PENAMBAHAN DI AKHIR void insertAkhir(int dataBaru, node *awal,node *akhir){ baru=malloc(sizeof(node)); baru->data=dataBaru; if (awal==NULL) { awal=baru; akhir=baru;} else { akhir->next=baru; akhir=baru; } akhir->next=NULL;

PENGHAPUSAN DATA

PENGHAPUSAN DATA Operasi penghapusan memiliki 3 mode Di awal list Di akhir list Data tertentu pada list

PENGHAPUSAN DATA DI AWAL Ilustrasi (sintax -- free(hapus);)

MENCETAK LINKED LIST

MENCETAK LINKED LIST awal akhir bantu void cetak(node *awal,node *akhir){ node *bantu; bantu = awal; while(bantu!=NULL) { printf(“%d”,bantu->data;); bantu=bantu->next; }

Pengaksesan & Update Data

PENGAKSESAN DATA Tidak semudah array yang dapat menggunakan index untuk menuju suatu data tertentu Suatu node pada linked list dengan pointer tunggal hanya memiliki info lokasi data (node) selanjutnya Penelusuran secara sekuensial (linier) dari awal sampai dengan posisi ataupun node (tujuan) dengan karakteristik data tertentu

UPDATE DATA Pada dasarnya update data akan diawali penelusuran data yang ingin diubah Ketika posisi data telah ditemukan secara langsung data terkait pada node dapat langsung diubah dengan data yang baru

Penambahan Data di Antara Ilustrasi Penambahan di Antara

Penambahan Data di Antara (ii) Sintax dalam C void insertAntara(int dataBaru, int dataAntara,node *awal){ node baru,bantu; baru=malloc(sizeof(node)); baru->data=dataBaru; if (awal==NULL) { awal=baru; awal->selanjutnya=NULL; }

Penambahan Data di Antara (ii) Sintax dalam C else { bantu=awal; while (bantu->data!=dataAntara && bantu->selanjutnya !=NULL){ bantu=bantu->selanjutnya; } baru->selanjutnya=bantu->selanjutnya; bantu->selanjutnya=baru;

Penghapusan Data tertentu Ilustrasi (penghapusan node dengan data=4)

Penghapusan Data tertentu(ii) Ilustrasi (lanjutan)

LATIHAN

SOAL Buatlah fungsi untuk : melakukan pencarian berdasarkan key tertentu melakukan perhitungan berapa banyak data tertentu pada list tersebut melakukan penghapusan key tertentu dalam list melakukan penghapusan node di akhir list melakukan update terhadap nilai suatu node melakukan penambahan data dengan memperhatikan urutan

melakukan pencarian berdasarkan key tertentu int cari(int key,node *awal,node *akhir){ node *bantu; bantu = awal; while(bantu->data!=key && bantu!=NULL) { bantu=bantu->next; } if(bantu!=NULL) return 1; else return 0;

melakukan perhitungan berapa banyak data tertentu pada list tersebut int count(int key,node *awal,node *akhir){ node *bantu; int jumlah=0; bantu = awal; while(bantu!=NULL) { if(bantu->data==key) jumlah++; bantu=bantu->next; } return jumlah;

melakukan penghapusan key tertentu dalam list void hapusKey(int key,node *awal,node *akhir){ node *bantu, *hold; bantu = awal; while(bantu->next->data!=key && bantu!=NULL) { bantu=bantu->next; } if(bantu!=NULL) hold=bantu->next; bantu->next=hold->next; free(hold); else printf(“Data tidak ketemu”);

melakukan penghapusan node di akhir list void hapusKey(node *awal,node *akhir){ node *bantu; bantu = awal; while(bantu->next!=akhir) { bantu=bantu->next; } akhir=bantu; free(bantu->next); akhir->next=NULL;

melakukan update terhadap nilai suatu node void update(int baru, int lama,node *awal,node *akhir){ node *bantu; bantu = awal; while(bantu->data!=lama && bantu!=NULL) { bantu=bantu->next; } if(bantu!=NULL) bantu->data=baru;

melakukan penambahan data DENGAN MEMPERHATIKAN URUTAN void insertUrut(int dataBaru, node *awal, node *akhir){ node *baru,*bantu, *hold; baru=malloc(sizeof(node)); baru->data=dataBaru; if (awal==NULL){ awal=baru; akhir=baru; awal->next=NULL; } else { if(akhir->data<dataBaru) //call insertAkhir else if(awal->data>dataBaru) //call insertAwal else{ bantu=awal; while(bantu->next->data<dataBaru && bantu!=NULL) bantu=bantu->next; if(bantu!=NULL) { hold=bantu->next; bantu->next=baru; baru->next=hold; }}}}