You are on page 1of 9

[ Linked List Step by Step(1) ]

Pada saat kita menggunakan array maka akan kita dapatkan bahwa data yang akan
kita masukkan terbatas. Dalam artian begini, kita ingin membuat program input
data mahasiswa, misalkan. Maka kita harus menentukan dulu berapa jumlah data
maksimum yang akan dimasukkan. Ini sangat kurang efektif dan tidak dinamis.
Selain itu, penggunaan aray sebenarnya akan menghabiskan resource memori.
Kenapa? Karena pada saat array tercipta ruang memori yang tercipta tidak akan
dapat dihapus pada saat program dijalankan. Lalu bagaimana jika kita ingin
membuat program mahasiswa tersebutlebih dinamis? Jawabannya adalah dengan
menggunakan tipe data pointer. Dengan menggunakan pointer maka data yanag
sudah tidak terpakai bisa direlokasi kembali. Linked list merupakan salah satu
teknik dalam pemanfaatan tipe data pointer ini. Dinamakan Linked list atau Senarai
berantai karena satu elemen dengan elemen lainnya saling berkaitan satu sama
lain dengan memanfaatkan pointer.

setiap simpul dalam suatu senerai berantai terbagi menjadi dua bagian.

Bagian pertama, disebut medan informasi, berisi informasi yang akan disimpan dan
diolah.

Bagian kedua, disebut medan penyambung (link field), berisi alamat simpul
berikutnya.

mendeklarasikan linked list


typedef struct nm_linked_list {

medan_informasi-1;

medan_informasi-1;

link_field;

};

keterangan:

medan informasi diisi dengan tipe data tertentu

link_field adalah pointer dari nm_linked_list

contoh:
typdef struct myLinkedList {

int data;

myLinkedList *next;

};

Membentuk node baru

Untuk membentuk node baru gunakan keyword new. Ini artinya kita
mempersiapkan node baru beserta alokasi memori tertentu. Kemudian
medan_informasi diisi dengan suatu

data tertentu dan linked field dari node baru tersebut kita NULL-kan. Berikut ini
adalah contohnya:
myLinkedList *baru;

baru = new myLinkedList;

baru->data = 7;

baru->next = NULL;

Penggunaan Head dalam linked list

Head dalam linked list untuk menandakan posisi depan suatu node. Ini nanti akan
berkaitan dengan penambahan suatu data, apakah dari depan atau dari belakang
node. untuk head ini kita jadikan variabel global sehingga nanti bisa diakses
dimanapun.
myLinkedList *head;

sebaiknya kita membuat inisialisasi untuk head sebagai berikut:


void init() {

head = NULL;

ini menandakan bahwa head tidak menunjukan tidak ada nilai dan tidak menunjuk
ke alamat memori manapun.
Sebelum pada pembahasan bagaimana membuat node baru untuk senarai, terlebih
dahulu kita buat fungsi untuk mengecek apkah linked list dalam keadaan kosong
atau tidak. Pada

program dibawah ini nilai 1 akan dikembalikan jika linked list dalam keadaan
kosong dan nilai 0 jika linked list dalam keadaan berisi.
int paKosong() {

if (head == NULL) return 1;

else return 0;

Penambahan Node ada dua, depan dan belakang. Penambahan Depan artinya data
baru yang akan dimasukkan akan dikaitkan di depan head. Sedangkan penambahan
di belakang artinya

node akan ditambahkan di belakang head.

Penambahan Node di depan


void tambahDepan() {

myLinkedList *baru = new MyLinkedList;

cout << “Masukkan Data baru : “; cin >> baru->data;

baru->next = NULL;

if(paKosong() == 1) {

head = baru;

head->next = NULL;

} else {

baru->next

Potongan program di bawah ini adalah untuk menampilkan isi dari linked list.
void tampilData() {

MyLinkedList *bantu;

bantu = head;
if (paKosong() == 0) {

while (bantu != NULL) {

cout << bantu->data << " " ;

bantu = bantu->next;

cout << endl;

} else {

cout << "Data masih kosong " << endl;

Untuk lebih memperjelas penggunaan dari operasi tambahDepan, mari simak dan
praktikan Full source code di bawah ini:

/**

* ===========================================================================

* listing1

* @author Eding Muh. Saprudin

* source : Handout Struktur Data Prodi TI UKDW/Antonius Rachmat C, S.Kom

* ===========================================================================

*/

#include <iostream.h>

#include <conio.h>

/* membuat linked list */

typedef struct myLinkedList {

char nim[10];

char nama[35];

int nilai;

myLinkedList *next;
};

myLinkedList *head;

/* keadaan awal */

void init() {

head = NULL;

/* fungsi untuk mengecek linked list

* apakah kosong atau tidak

* jika kosong maka bernilai 1

* jika tidak kosong maka bernilai 0

*/

int paKosong() {

if (head == NULL) return 1;

else return 0;

/**

* fungsi untuk menambahkan data dari depan node

*/

void tambahDepan() {

clrscr();

myLinkedList *baru;

baru = new myLinkedList;

cout << "Masukkan Data lengkap di bawah ini : " << endl;

cout << "NIM : "; cin >> baru->nim;

cout << "Nama : "; cin >> baru->nama;

cout << "Nilai : "; cin >> baru->nilai;


baru->next = NULL;

if (paKosong() == 1) {

head = baru;

head->next = NULL;

} else {

baru->next = head;

head = baru;

/**

* fungsi untuk menampilkan data linked list

*/

void tampilData() {

int no = 1;

clrscr();

myLinkedList *bantu;

bantu = head;

if (paKosong() == 0) {

while (bantu != NULL) {

cout << "No. : " << no << endl;

cout << "NIM : " << bantu->nim << endl;

cout << "Nama : " << bantu->nama << endl;

cout << "Nilai : " << bantu->nilai << endl << endl;

no++;

bantu = bantu->next;

cout << endl;

} else {

cout << "Data masih kosong " << endl;


}

cout << "Tekan Enter untuk kembali ke menu!";

getch();

/**

* fungsi Menu, Untuk menentukan linked list mana

* yang dipilih

*/

int menu() {

int pilihan;

clrscr();

cout << "+----------------------+\n";

cout << "| MENU PILIHAN |\n";

cout << "+----------------------+\n";

cout << "| 1. Tambah Depan |\n";

cout << "| 5. TampilData |\n";

cout << "| 6. Keluar |\n";

cout << "+----------------------+\n";

cout << "| PILIHAN ANDA ? [ ] |\n";

cout << "+----------------------+\n";

gotoxy(19,8);

cin >> pilihan;

return pilihan;

/**

* fungsi operasi data

*/

void operasiData() {

int pilih;

do {
pilih = menu();

clrscr();

switch (pilih) {

case 1 :

tambahDepan();

break;

case 5 :

tampilData();

break;

case 6:

clrscr();

cout << "Terima kasih coy!!!";

break;

} while (pilih != 6);

/**

* PROGRAM UTAMA

*/

void main() {

init();

operasiData();

Jika program dijalankan, maka akan tampil seperti gambar berikut :

You might also like