Algoritma Dan Struktur Data BAB V (Single Linked List 1)
Single Linked List 1
printf("Hallo Para Programmer!!");
printf("Disini Saya Akan Menjelaskan Sedikit Dasar Mengenai Single Linked List Dalam Bahasa C/C++");
printf("Terus Ikuti Blog Ini Untuk Mendapatkan Artikel Bermanfaat Selanjutnya yah");
printf("Selamat Belajar!!");
Secara konseptual Array adalah struktur data yang
memesan tempat secara berurutan untuk jumlah data statis. Sedangkan Memory
Allocation (malloc) adalah sebuah fungsi fasilitas untuk memesan tempat secara
berurutan untuk tipe data pointer dengan jumlah data dinamis.
Permasalahan akan timbul jika kita memesan data dengan
jumlah yang besar sementara tempat di memori yang berurutan tidak ada. Solusi
untuk permasalahan ini adalah dengan menggunakan linked list atau senara
berantai. Linked list merupakan deretan elemen yang berdampingan. Akan tetapi,
karena elemen-elemen tersebut dialokasikan secara dinamis (menggunakan malloc),
sangat penting untuk diingat bahwa kenyataannya, linked list akan
terpencar-pencar di memori. Pointer pada suatu elemen berisi alamat untuk data
berikutnya sebagai penjamin bahwa semua elemen dapat diakses. Pada Gambar 5.1
ditunjukkan perbedaan array dan Linked list.
1. Bagaimana Membangun Linked List
Untuk membangun sebuah linked list, maka terdapat
beberapa langkah yang harus disiapkan. Langkah tersebut adalah sebagai berikut
a. Deklarasi
b. Alokasi memori
c. Mengisi data
d. Menyiapkan untuk dihubungkan dengan data baru berikutnya
1.1 Deklarasi
Simpul
Linked list terdiri dari elemen-elemen individu,
dimana masing-masing dihubungkan dengan pointer tunggal. Masing-masing elemen
terdiri dari dua bagian, yaitu sebuah data dan sebuah pointer yang disebut
dengan pointer next. Dengan menggunakan struktur two-member seperti ini, linked
list dibentuk dengan cara menunjuk pointer next suatu elemen ke elemen yang
mengikutinya. Pointer next pada elemen terakhir merupakan NULL, yang
menunjukkan akhir dari suatu list.
Pada Gambar 5.2 ditunjukkan deklarasi untuk sebuah simpul menggunakan struktur yang diikuti deklarasi sebuah variable yang menggunakan struktur tersebut.
Dari Gambar 5.2 didapatkan gambaran sebuah simpul pada
Gambar 5.3
1.2 Alokasi
Memori
Ketika sebuah variabel dideklarasikan, terlebih dahulu
harus diinisialisasi. Demikian juga dengan pengalokasian secara dinamis.
Sehingga, fungsi untuk mengalokasikan sebuah node baru, fungsi alokasi_simpul()
menggunakan malloc() untuk mendapatkan memori aktual, yang akan
menginisialisasi suatu field data. next selalu diinisialisasi sebagai NULL.
Untuk melihat kemungkinan alokasi memori gagal, maka fungsi alokasi_simpul()
menghasilkan NULL, bila berhasil maka menghasilkan sebuah simpul. Fungsi dari
alokasi_simpul() adalah sebagai berikut :
struct simpul* alokasi_simpul()
{
struct simpul * new; new = (struct
simpul*)malloc(sizeof(struct simpul)); if(new==NULL)
return NULL;
else
new->next=NULL;
return new; }
1.3 Mengisi Data Dan Menyiapkan Dihubungkan Dengan Data Berikutnya
Setelah melakukan deklarasi untuk simpul dan terdapat fungsi untuk melakukan alokasi memori maka keduanya kita gunakan untuk membangun sebuah linked list dengan prinsip LIFO (Last In First Out) dengan perintah sebagai berikut:
Dengan perintah pada Gambar 5.4 didapatkan ilustrasi
alokasi memori untuk sebuah simpul seperti Gambar 5.5.
2. Operasi Pada Linked list
Terdapat beberapa Operasi yang penting pada linked
list, yaitu:
1. Menyisipkan sebagai simpul ujung(awal) dari linked
list.
2. Membaca atau menampilkan
3. Mencari sebuah simpul tertentu
4. Menyisipkan sebagai simpul terakhir
5. Menghapus simpul tertentu
6. Menyisipkan setelah simpul tertentu
7. Menyisipkan sebelum simpul tertentu
2.1 Menyisipkan Sebagai Simpul Ujung(Awal) Dari Linked
list
Setelah mendeklarasikan, mengisi data dan menyiapkan
untuk dihubungkan dengan simpul berikutnya untuk menciptakan simpul pertama
seperti yang dilakukan sebelumnya. Kita bisa melanjutkan dengan operasi menyisipkan
sebagai simpul ujung dari linked list.
2.2 Membaca Atau Menampilkan
Langkah-langkah untuk membaca atau menampilkan linked
list yang sudah terbentuk di atas adalah sebagai berikut:
1. Inisialisasi sebuah variabel bertipe struct simpul*
(tampil) dengan ujung
2. Tampilkan data nama dan nrp yang ada pada tampil
3. Jalankan tampil = tampil->next
4. Ulangi langkah 2 selama tampil tidak sama dengan
NULL
2.3 Mencari Simpul Tertentu
Langkah-langkah untuk
mencari simpul tertentu pada linked list yang sudah terbentuk di atas adalah
sebagai berikut:
1. Inisialisasi sebuah variabel bertipe struct simpul*
(cari) dengan ujung
2. Ulangi langkah 3 jika data pada simpul cari tidak
sama dengan data yang dicari atau cari tidak sama NULL
3. Jalankan cari = cari->next
2.4 Menyisipkan Sebagai Simpul Terakhir
Langkah-langkah untuk menyisipkan simpul baru sebagai
simpul terakhir pada linked list yang sudah terbentuk di atas adalah sebagai
berikut:
1. Alokasikan memori untuk simpul baru yang akan
disisipkan
2. Inisialisasi sebuah variabel bertipe struct simpul*
(cari) dengan ujung
3. Lakukan proses pengulangan pencarian sampai
cari->next sama dengan NULL
4. Hubungkan cari->next ke simpul baru
0 comments:
Posting Komentar