1. Pengertian Linked List :
Linked list adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari dua bagian Linked list juga merupakan suatu cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data yang diperlukan. 2. Jenis-jenis Linked List :
Single Linked List
Single Linked List merupakan suatu linked list yang hanya memiliki satu variabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke NULL.
Contoh codingnya :
struct Mahasiswa{
char nama[25];
int usia;
struct Mahasiswa *next;
}*head,*tail;
char nama[25];
int usia;
struct Mahasiswa *next;
}*head,*tail;
Double Linked List
Double Linked List merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke NULL.
Contoh Codingnya :
struct Mahasiwa{
char nama[25];
int usia;
struct Mahasiswa *next,*prev;
}*head,*tail;
char nama[25];
int usia;
struct Mahasiswa *next,*prev;
}*head,*tail;
Circular Double Linked List
Merupakan double linked list yang simpul terakhirnya menunjuk ke simpul terakhirnya menunjuk ke simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu lingkaran.
Operasi-Operasi yang ada pada Linked List :
– Insert
Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu linked list.
– IsEmpty
Fungsi ini menentukan apakah linked list kosong atau tidak.
– Find First
Fungsi ini mencari elemen pertama dari linked list
– Find Next
Fungsi ini mencari elemen sesudah elemen yang ditunjuk now
– Retrieve
Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.
– Update
Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu.
– Delete Now
Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalahelemen pertama dari linked list (head), head akan berpindah ke elemen berikut.
– Delete Head
Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.
– Clear
Fungsi ini menghapus linked list yang sudah ada. Fungsi ini wajib dilakukan bila anda ingin mengakhiri program yang menggunakan linked list. Jika anda melakukannya, data-data yang dialokasikan ke memori pada program sebelumnya akan tetap tertinggal di dalam memori.
3. Beberapa Jenis yang operasi yang terdapat didalamnya
a. Insert
Istilah insert berarti menambahkan sebuah simpul baru kedalam suatu Linked List.
b. Isempty
Fungsi ini menentukan apakah Linked List kosong atau tidak.
c. Find First
Fungsi ini mencari elemen pertama pada Linked List.
d. Find Next
Fungsi ini mencari elemen sesudah elemen yang ditunjuk now.
e. Retrieve
Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.
f. Update
Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu.
g. Delete Now
Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah elemen pertama dari Linked List (head), head akan berpindah pada elemen berikut.
h. Delete Head
Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.
4. Algoritma dan Contoh program untuk operasi didalamnya.
CONTOH PROGRAM :
#include <stdio.h>
#include <stdlib.h>
struct NODE {
int number;
struct NODE *next;
};
void append_node(struct NODE *llist, int num);
int search_value(struct NODE *llist, int num);
void display_list(struct NODE *llist);
int main(void) {
int num = 0;
int input = 5;
int retval = 0;
struct NODE *llist;
llist = (struct NODE *)malloc(sizeof(struct NODE));
llist->number = 0;
llist->next = NULL;
while(input != 0) {
printf("\n===== Pilih Menu =====\n");
printf("0: Keluar\n");
printf("1: Insert\n");
printf("2: Search\n");
printf("3: Tampilkan\n");
printf("\nPilihan: ");scanf("%d", &input);
if(input==0){
printf("...Terimakasih...\n");
}
else if(input==1){
printf("Anda Memilih: 'Insert'\n");
printf("Masukkan Nilai Yang Akan di Insert: ");
scanf("%d", &num);
append_node(llist, num);
}
else if(input==2){
printf("Anda Memilih: 'Search'\n");
printf("Masukkan Nilai Yang Akan di Cari (Search): ");
scanf("%d", &num);
if((retval = search_value(llist, num)) == -1)
printf("Value `%d' not found\n", num);
else
printf("Value `%d' located at position `%d'\n", num, retval);
}
else if(input==3){
printf("Anda Memilih: 'Tampilkan'\n");
display_list(llist);
}}
free(llist);
return(0);
}
void append_node(struct NODE *llist, int num) {
while(llist->next != NULL)
llist = llist->next;
llist->next = (struct NODE *)malloc(sizeof(struct NODE));
llist->next->number = num;
llist->next->next = NULL;
}
int search_value(struct NODE *llist, int num) {
int retval = -1;
int i = 1;
while(llist->next != NULL) {
if(llist->next->number == num)
return i;
else
i++;
llist = llist->next;
}
return retval;
}
void display_list(struct NODE *llist) {
while(llist->next != NULL) {
printf("%d ", llist->number);
llist = llist->next;
}
printf("%d", llist->number);
}
SUMBER :
Tidak ada komentar:
Posting Komentar