0% menganggap dokumen ini bermanfaat (0 suara)
48 tayangan17 halaman

1linked List

Linked list adalah struktur data yang menyimpan elemen data secara terhubung menggunakan pointer. Dokumen ini membahas pengertian linked list tunggal dan ganda beserta contoh kode untuk mengimplementasikan operasi dasar seperti penambahan dan penghapusan data pada linked list tunggal dan ganda.

Diunggah oleh

Hobby makan
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
48 tayangan17 halaman

1linked List

Linked list adalah struktur data yang menyimpan elemen data secara terhubung menggunakan pointer. Dokumen ini membahas pengertian linked list tunggal dan ganda beserta contoh kode untuk mengimplementasikan operasi dasar seperti penambahan dan penghapusan data pada linked list tunggal dan ganda.

Diunggah oleh

Hobby makan
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 17

V-1

BAB V
LINKED LIST
Jumlah Pertemuan : 2 x 60 menit

Tujuan Praktikum
1. Praktikan dapat memahami pengertian dari linked list
2. Praktikan dapat mengetahui dan memahami cara kerja dari system
Linked List
3. Praktikan dapat mengoprasikan atau menerapkan metode Linked
List

Alat / bahan
1. Perangkat komputer
2. Perangkat lunak: Dev C++
3. Modul Struktur Data 2019

V.1 Landasan Teori


5.1 Pengertian

Linked list adalah sekumpulan elemen dari data yang bertipe sama yang
saling terurut dan terhubung dengan bantuan variabel pointer, yang setiap data
didalamnya disebut node ( simpul ) menempati alokasi memorat secara dinamis
dan biasanya berupa struct yang terdiri dari beberapa field. Linked list juga
merupakan suatu cara untuk menyimpan data dengan struktursehingga dapat
secara otomatis menciptakan suatu tempat baru untuk menyimpan data yang
diperlukan

Perbandingan Array dengan Linked List

Array Linked List

Statis Dinamis

Penambahan / Penghapusan data Penmbahan / Penghapusan data tidak


terbatas terbatas

Penghapusan Array tidak Penghapusan Linked List mudah


mungkin
V-2

5.2 Single Linked List

Single linked list merupakan linked list yang field pointer-nya hanya
satu buah saja dan satu arah. Serta pada akhir node, pointernya menunjuk
NULL.

5.2.1 Jenis Single Linked List

1. Single Linked list dengan head

2. Single Linked list dengan head dan tail

5.2.2 Deklarasi Single Linked List

1. Deklarasi Node

Pendeklarasian Node pada single link list menggunakan


struct dengan 2 buah field, yaitu field untuk menyimpan data dan
field yang bertipe pointer dari untuk menyimpan alamat dari
node selanjutnya. Setelah itu membuat variabel yang bernama
node yang digunakan kunci untuk mengakses struct TNode.

Struct Node{
int data;
Node *next;
};

2. Pembuatan Node baru

Node *baru;
baru=new Node;
baru->data=databaru;
baru->next=NULL

Penjelasan :

Keyword new berguna untuk mempersiapkan sebuah node


baru beserta alokasi memorinya, kemudian node tersebut diisi
data dan pointer nextnya ditunjuk ke NULL.
V-3

5.3 Double Linked List

Double linked list adalah linked list yang filed pointernya 2 arah, ke
node sebelum dan sesudahnya. Double linked list memiliki 3 buah field dalam
1 node yaitu, 1 untuk menyimpan data dan 2 untuk pointer ( next dan prev ).
Pointer next menunjuk pada node setelahnya dan prev menunjuk pada node
sebelumnya.

5.3.1 Jenis Double Linked List

1. Double Linked List menggunakan Head

2. Double Linked List menggunakan Head dan Tail

5.3.2 Deklarasi Double Linked List

1. Deklarasi Node

struct Node{
int data;
Node *next;
Node *prev;
}

2. Pembuatan Node baru


Node *baru;
baru=new Node;
baru->data=databaru;
baru->next=NULL;
baru->prev=NULL

V.2 Langkah-langkah Praktikum


1. Script ditulis dengan menggunakan Dev C++
2. Script dicompile dengan menggunakan Dev C++
3. Aplikasi dijalankan dengan menggunakan Dev C++
V-4

V.3 Tugas Praktikum ke-1 : Single Linked List


1. Listing Program :
#include <iostream>
using namespace std;

struct Node{
int data;
Node *next;
};
Node *head;

int cek(){
if(head==NULL){
return 0;
}
else{
return 1;
}
}

void tambahdepan(int databaru){


Node *baru;
baru=new Node;
baru->data=databaru;
baru->next=NULL;
if (cek==0){
head=baru;
head->next=NULL;
}
else{
baru->next=head;
head=baru;
}
cout<<"Penambahan Data Berhasil \n"<<endl;
}

void tambahbelakang(int databaru){


Node *baru;
Node *temp;
baru=new Node;
baru->data=databaru;
baru->next=NULL;
if(cek()==0){
head=baru;
head->next=NULL;
}
else{
temp=head;
while (temp->next!=NULL){
temp=temp->next;
}
temp->next=baru;
}
cout<<"Penambahan Data Berhasil \n"<<endl;
V-5

void hapusDepan(){
Node *hapus;
int cap;
if (cek()==1){
if(head->next != NULL){
hapus = head;
cap = hapus->data;
head = head->next;
delete hapus;
}
else{
cap = head->data;
head = NULL;
}
cout<<"Data "<<cap<<" terhapus\n\n";
}
else cout<<"Masih kosong\n";
}

void hapusBelakang(){
Node *hapus,*temp;
int cap;
if (cek()==1){
if(head->next != NULL){
temp = head;
while(temp->next->next!=NULL){
temp = temp->next;
}
hapus = temp->next;
cap = hapus->data;
temp->next = NULL;
delete hapus;
}
else{
cap = head->data;
head = NULL;
}
cout<<"Data "<<cap<<" terhapus\n\n";
}
else cout<<"Masih kosong\n";
}

void tampil(){
Node *temp;
temp=head;
if (cek==0){
cout<<"Data Masih Kosong";
}
else if(temp==NULL){
cout<<"Data Masih Kosong"<<endl;
}
else{
while(temp!=NULL){
cout<<temp->data<<" ";
temp=temp->next;
}
}
V-6

main(){
int pilihan, data;
do{
cout<<"Single Linked List dengan Head"<<endl;
cout<<"1. Masukkan Data dari Depan"<<endl;
cout<<"2. Masukkan Data dari Belakang"<<endl;
cout<<"3. Hapus Data dari Depan"<<endl;
cout<<"4. Hapus Data dari Belakang"<<endl;
cout<<"5. Tampilkan Data"<<endl;
cout<<"6. Keluar"<<endl;
cout<<"Masukkan Pilihan Anda : ";
cin>>pilihan;
if (pilihan == 1 ){
cout<<"Masukkan Data = ";
cin>>data;
tambahdepan(data);
}
else if (pilihan == 2 ){
cout<<"Masukkan Data = ";
cin>>data;
tambahbelakang(data);
}
else if (pilihan == 3 ){
hapusDepan();
cout<<endl;
}
else if (pilihan == 4 ){
hapusBelakang();
cout<<endl;
}
else if (pilihan == 5 ){
tampil();
cout<<endl<<endl;
}
else if (pilihan == 6 ){
cout<<"Keluar dari program";
}
else{
cout<<"Pilihan tidak tersedia... \n\n";
}
}
while(pilihan!=6);
}
V-7

2. Tampilan Program :

Gambar 5.1 Program Single Linked List

3. Analisa Program :
Fungsi cek digunakan untuk mengecek apakah head bernilai NULL
atau tidak. Akan mereturnkan 0 jika head = NULL dan akan mereturnkan
1 jika head tidak NULL / ada isinya. Struct Node berisi elemen int data dan
*next dengan tipe data Node.

V.4 Tugas Praktikum ke-2 : Double Linked List Input Data


1. Listing Program :

#include <iostream>
using namespace std;

struct Node
{
int data;
Node *next;
Node *prev;
};
Node *head;
V-8

int cek()
{
if(head == NULL)
{
return 0;
}
else
{
return 1;
}
}

void tambahdepan(int databaru)


{
Node *baru;
baru = new Node;
baru->data = databaru;
baru->next = NULL;
baru->prev = NULL;
if(cek()==0)
{
head=baru;
head->next = NULL;
head->prev = NULL;
}
else
{
baru->next = head;
head->prev = baru;
head = baru;
}
cout<<"Data ditambahkan \n"<<endl;
}

main()
{
int pilihan, data;
do
{
cout<<"Double Linked List Dengan Head"<<endl;
cout<<"1. Masukkan Data dari Depan"<<endl;
cout<<"2. Keluar"<<endl;
cout<<"Masukkan Pilihan Anda = "; cin>>pilihan;
if (pilihan == 1)
{
cout<<"Masukkan Data = "; cin>>data;
tambahdepan(data);
}
else if(pilihan ==2)
{
cout<<"keluar dari program...";
}
else
{
cout<<"pilihan tidak tersedia... \n\n";
}
}
while(pilihan!=2);
}
V-9

2. Tampilan Program :

Gambar 5.2 Program Double Linked List Input Data

3. Analisa Program
Pertama – tama membuat sebuah fungsi cek yang digunakan untuk
mengecek apakah head berisi data atau NULL. Kemudian membuat fungsi
tambahdepan untuk memasukkan data. Pada fungsi main pilihan 1 berisi
fungsi tambahdepan yang telah dibuat sebelumnya

V.5 Tugas Rumah ke-1 : Menampilkan Hubungan Orang tua Anak


1. Listing Program :
#include <iostream>
using namespace std;

struct Node{
string data;
Node *next;
};
Node *head;
V-10

int cek(){
if(head==NULL){
return 0;
}
else{
return 1;
}
}

void tambahdepan(string databaru){


Node *baru;
baru=new Node;
baru->data=databaru;
baru->next=NULL;
if (cek==0){
head=baru;
head->next=NULL;
}
else{
baru->next=head;
head=baru;
}
cout<<"Berhasil diinput\n"<<endl;
}

void tambahbelakang(string databaru){


Node *baru;
Node *temp;
baru=new Node;
baru->data=databaru;
baru->next=NULL;
if(cek()==0){
head=baru;
head->next=NULL;
}
else{
temp=head;
while (temp->next!=NULL){
temp=temp->next;
}
temp->next=baru;
}
cout<<"Berhasil diinput\n"<<endl;
}

void hapusDepan(){
Node *hapus;
string cap;
if (cek()==1){
if(head->next != NULL){
hapus = head;
cap = hapus->data;
head = head->next;
delete hapus;
}
else{
cap = head->data;
head = NULL;
V-11

}
cout<<cap<<" terhapus\n\n";
}
else cout<<"Masih kosong\n";
}

void hapusBelakang(){
Node *hapus,*temp;
string cap;
if (cek()==1){
if(head->next != NULL){
temp = head;
while(temp->next->next!=NULL){
temp = temp->next;
}
hapus = temp->next;
cap = hapus->data;
temp->next = NULL;
delete hapus;
}
else{
cap = head->data;
head = NULL;
}
cout<<cap<<" terhapus\n\n";
}
else cout<<"Masih kosong\n";
}

void tampil(){
Node *temp;
temp=head;
if (cek==0){
cout<<"Data Masih Kosong";
}
else if(temp==NULL){
cout<<"Data Masih Kosong"<<endl;
}
else{
while(temp!=NULL){
cout<<temp->data<<"-->";
temp=temp->next;
}
}
}

main(){
int pilihan;
string data;
do{
cout<<"Program Hubungan Orang Tua Anak"<<endl;
cout<<"1. Masukkan dari Depan"<<endl;
cout<<"2. Masukkan dari Belakang"<<endl;
cout<<"3. Hapus dari Depan"<<endl;
cout<<"4. Hapus dari Belakang"<<endl;
cout<<"5. Tampilkan"<<endl;
cout<<"6. Keluar"<<endl;
cout<<"Masukkan Pilihan Anda : ";
cin>>pilihan;
V-12

if (pilihan == 1 ){
cout<<"Masukkan Nama = ";
cin>>data;
tambahdepan(data);
}
else if (pilihan == 2 ){
cout<<"Masukkan Nama = ";
cin>>data;
tambahbelakang(data);
}
else if (pilihan == 3 ){
hapusDepan();
cout<<endl;
}
else if (pilihan == 4 ){
hapusBelakang();
cout<<endl;
}
else if (pilihan == 5 ){
tampil();
cout<<endl<<endl;
}
else if (pilihan == 6 ){
cout<<"Keluar dari program";
}
else{
cout<<"Pilihan tidak tersedia... \n\n";
}
}
while(pilihan!=6);
}

2. Tampilan Program :

Gambar 5.3 Program Menampilkan Hubungan Orang tua Anak


V-13

3. Analisa Program :
Pertama tama membuat beberapa procedure dengan nama
tambahdepan, tambahbelakang, hapusdepan, hapus belakang dan tampil.
Procedure tambahdepan dipanggil saat user menginputkan 1,
tambahbelakang dipanggil saat user menginputkan 2, hapusdepan saat
menginputkan 3, hapusbelakang saat menginputkan 4 dan tampil saat
menginputkan 5.

V.6 Tugas Rumah ke-2 : Implementasi Double Linked List


1. Listing Program :
#include <iostream>
using namespace std;

struct Node
{
int data;
Node *next;
Node *prev;
};
Node *head;

int cek()
{
if(head == NULL)
{
return 0;
}
else
{
return 1;
}
}

void tambahdepan(int databaru)


{
Node *baru;
baru = new Node;
baru->data = databaru;
baru->next = NULL;
baru->prev = NULL;
if(cek()==0)
{
head=baru;
head->next = NULL;
head->prev = NULL;
}
else
{
V-14

baru->next = head;
head->prev = baru;
head = baru;
}
cout<<"Data ditambahkan \n"<<endl;
}

void tambahbelakang (int databaru)


{
Node *baru,*temp;
baru = new Node;
baru->data = databaru;
baru->next = NULL;
baru->prev = NULL;
if(cek()==0)
{
head=baru;
head->next = NULL;
head->prev = NULL;
}
else
{
temp=head;
while(temp->next!=NULL)
{
temp=temp->next;
}
temp->next = baru;
baru->prev = temp;
}
cout<<"Data ditambahkan \n" << endl;
}

void tampil()
{
Node *temp; temp = head;
if(cek()==1)
{
while(temp!=NULL)
{
cout<<temp->data<< ends;
temp=temp->next;
}
cout<<endl<<endl;
}
else cout<<"Tidak ada data \n" << endl;
}

void hapusdepan()
{
Node *hapus;
int cap;
if (cek()==1)
{
if(head->next != NULL)
{
hapus = head;
cap = hapus->data;
head = head->next;
V-15

head->prev = NULL;
delete hapus;
}
else
{
cap = head->data;
head = NULL;
}
cout<<"Data "<<cap<<" terhapus" << endl;
}
else
{
cout<<"Tidak ada data \n" << endl;
}
}

void hapusbelakang()
{
Node *hapus;
int cap;
if (cek()==1)
{
if(head->next != NULL)
{
hapus = head;
while(hapus->next!=NULL)
{
hapus = hapus->next;
}
cap = hapus->data;
hapus->prev->next = NULL;
delete hapus;
}
else
{
cap = head->data;
head = NULL;
}
cout<<"Data "<<cap<<" terhapus\n";
}
else
{
cout<<"Tidak ada data \n";
}
}

main()
{
int pilihan, data;
do
{
cout<<"Double Linked List Dengan Head"<<endl;
cout<<"1. Masukkan Data dari Depan"<<endl;
cout<<"2. Masukkan Data dari Belakang"<<endl;
cout<<"3. Tampilkan Data"<<endl;
cout<<"4. Hapus Data dari Depan"<<endl;
cout<<"5. Hapus Data dari Belakang"<<endl;
cout<<"6. Keluar"<<endl;
cout<<"Masukkan Pilihan Anda = "; cin>>pilihan;
V-16

if (pilihan == 1)
{
cout<<"Masukkan Data = "; cin>>data;
tambahdepan(data);
}
else if(pilihan ==2)
{
cout<<"Masukkan Data = "; cin>>data;
tambahbelakang(data);
}
else if(pilihan ==3)
{
tampil();
}
else if(pilihan ==4)
{
hapusdepan();
cout<<endl;
}
else if(pilihan ==5)
{
hapusbelakang();
cout<<endl;
}
else if(pilihan ==6)
{
cout<<"keluar dari program...";
}
else
{
cout<<"pilihan tidak tersedia... \n\n";
}
}
while(pilihan!=6);
}

2. Tampilan Program :

Gambar 5.4 Program Implementasi Double Linked List


V-17

3. Analisa Program :
Program diatas merupakan Double Linked List. Dalam struct Node
terdapat elemen int data, *next dan *prev yang menggunakan tipe data
Node. Di dalam fungsi main, dibuat menu pilihan menggunakan perulangan
do-while yang setiap menunya sudah berisi procedure nyamasing – masing.

V.6 Kesimpulan
1. Linked List terbagi menjadi 2 yaitu Single Linked List, yang hanya memiliki
data dan *next pada Node dan Double Linked List, yang memiliki *prev,
data dan *next pada Node.
2. Linked List adalah sekumpulan elemen dari data yang bertipe sama yang
saling terurut dan terhubung dengan bantuan variabel pointer
3. Linked List dengan Array merupakan 2 hal yang berbeda. Contoh
perbedaannya adalah Array bersifat Statis sedangkan Linked List bersifat
dinamis

Anda mungkin juga menyukai