Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
1. Teori Dasar
Pengertian Linked list sekumpulan elemen bertipe sama, yang mempunyai keterurutan
tertentu, yang setiap elemennya terdiri dari dua bagian. Struktur berupa rangkaian elemen
saling berkait dimana setiap elemen dihubungkan elemen lain melalui pointer. Pointer
adalah alamat elemen. Penggunaan pointer untuk mengacu elemen berakibat elemen-
elemen bersebelahan secara logik walau tidak bersebelahan secara fisik di memori.
Bentuk Umum : Infotype sebuah tipe terdefinisi yang menyimpan informasi sebuah
elemen list. Next address dari elemen berikutnya (suksesor) Jika L adalah list, dan P
adalah address, maka alamat elemen pertama list L dapat diacu dengan notasi. Sebelum
digunakan harus dideklarasikan terlebih dahulu. Elemen yang diacu oleh P dapat
dikonsultasi informasinya dengan notasi.
Beberapa Definisi :
1. List l adalah list kosong, jika First(L) = Nil
2. Elemen terakhir dikenali, dengan salah satu cara adalah karena Next(Last) = Nil
Nil adalah pengganti Null, perubahan ini dituliskan dengan #define Nil Null
Pada gambar di atas tampak bahwa sebuah data terletak pada sebuah lokasi memori
area. Tempat yang disediakan pada satu area memori tertentu untuk menyimpan data
dikenal dengan sebutan node atau simpul. Setiap node memiliki pointer yang menunjuk ke
simpul berikutnya sehingga terbentuk satu untaian, dengan demikian hanya diperlukan
sebuah variabel pointer. Susunan berupa untaian semacam ini disebut Single Linked List
(NULL memilik nilai khusus yang artinya tidak menunjuk ke mana-mana. Biasanya
Linked List pada titik akhirnya akan menunjuk ke NULL).
Pembuatan Single Linked List dapat menggunakan 2 metode:
LIFO (Last In First Out), aplikasinya : Stack (Tumpukan)
FIFO (First In First Out), aplikasinya : Queue (Antrean)
b. Double Linked List
Salah satu kelemahan single linked list adalah pointer (penunjuk) hanya dapat
bergerak satu arah saja, maju/mundur, atau kanan/kiri sehingga pencarian data pada single
linked list hanya dapat bergerak dalam satu arah saja. Untuk mengatasi kelemahan
tersebut, dapat menggunakan metode double linked list. Linked list ini dikenal dengan
nama Linked list berpointer Ganda atau Double Linked List.
b. insertAtBack
Metode insertAtBack menempatkan sebuah node baru di bagian belakang list.
c. removeFromFront
Metode removeFromFront memindahkan node pertama list dan mengembalikan
(memberikan) sebuah referensi untuk memindahkan data. Metode ini
melakukan EmptyListException jika list dalam keadaan kosong ketika program
memanggil metode ini.
e. removeFromBack
Metode removeFromBack memindahkan node terakhir list dan mengembalikan
(memberikan) sebuah referensi untuk memindahkan data. Metode ini
melakukan EmptyListException jika list dalam keadaan kosong ketika program
memanggil metode ini.
3. Aplikasi
Studi kasus yang kami gunakan adalah, kasus pada pencatatan menu makanan atau
minuman pada setiap nomor meja di sebuah rumah makan. Alur dari kasus tersebut dapat di
lihat pada gambar di bawah.
Kasir akan mencatat nomor meja dan menu makanan / minuman yang dipesan oleh
pembeli. Di sini kami menggunakan konsep Single Linked List untuk penyelesaiannya.
Berikut program penyelesaian kasus di atas dengan bahasa C.
Source Code :
#include "stdafx.h"
#include "iostream"
#include "conio.h"
#include "string"
using namespace std;
struct Pesanan {
std::string Menu;
int Jumlah;
Pesanan *next;
};
int main()
{
int jmlh = 0, i;
char t;
char no_meja[5];
Pembahasan :
Input :
Nomor Meja (Sekali).
Menu Pesanan (Berulang-ulang sesuai kebutuhan).
Jumlah Pesanan (Berulang-ulang sesuai kebutuhan).
Output : Berupa data-data pesanan yang sudah dipesan sebelumnya.
Script :
Pembuatan NODE
struct Pesanan {
std::string Menu;
int Jumlah;
Pesanan *next; //pointer
};
Inisialiasi variabel
int jmlh = 0, i; // variabel untuk pengulangan output
char t; // variabel untuk pengulangan input
char no_meja[5]; //variabel untuk nomor meja
Output Data
cout << "---------------------------- \n";
cout << "No.Meja\t : " << no_meja << "\n"; // output no meja
cout << "============================ \n";
cout << "Kode\t Menu\t \n";
cout << "============================ \n";
for ( i = 0; i < jmlh+1; i++) // pengulangan untuk output data
pesanan berdasarkan isi dari variabel jmlh
{
cout << ujung->Menu << "\t " << ujung->Jumlah << " \n" ; //
output data
ujung = ujung->next; // ujung di isikan dengan pointer yang
berisikan data pesanan sebelumnya
}
5. Daftar Pustaka
1. https://kuliahinformatika.wordpress.com/2010/01/21/linked-list-operasi-dasar-yang-
dimiliki-linked-list/
2. http://nindi16tk.blog.pcr.ac.id/2017/10/11/439/