Mengenal Linked List(1)

  • June 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Mengenal Linked List(1) as PDF for free.

More details

  • Words: 959
  • Pages: 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 #include

/* 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 :

Related Documents

List1
November 2019 26
Check List1
June 2020 12
Updated List1
June 2020 14
Submission List1
May 2020 10
Mumbai List1
July 2020 15