LINKED LIST
Oleh :
S1 PTI’17 OFF A
#include <iostream>
#include <conio.h>
#include <iomanip> //setw()
using namespace std;
struct node
{
int data;
node* next; //untuk menghubungkan dengan node lain,
tipe data dibuat sama seperti aturan penggunaan pointer
};
node* head;
node* tail;
node* curr;
node* entry;
node* del;
void inisialisasi()
{
head = NULL;
tail = NULL;
}
void hapus()
{
int simpan;
if(head==NULL)
{
cout<<"\nlinked list kosong, penghapusan tidak
bisa dilakukan"<<endl;
}
else
{
simpan = head->data;
cout<<"\ndata yang dihapus
adalah"<<simpan<<endl;
//hapus depan
del = head;
head = head->next;
delete del;
}
}
void cetak()
{
curr = head;
if(head == NULL)
cout<<"\ntidak ada data dalam linked
list"<<endl;
else
{
cout<<"\nData yang ada dalam linked list
adalah"<<endl;
cout<<setw(6);
while(curr!=NULL)
{
cout<<curr->data<<"->";
curr = curr->next;
}
cout<<endl;
}
}
void menu()
{
char pilih, ulang;
int data;
do
{
system("cls");
cout<<"SINGLE LINKED LIST NON CIRCULAR"<<endl;
cout<<"-------------------------------"<<endl;
cout<<"Menu : "<<endl;
cout<<"1. Input data"<<endl;
cout<<"2. Hapus data"<<endl;
cout<<"3. Cetak data"<<endl;
cout<<"4. Exit"<<endl;
cout<<"Masukkan pilihan Anda : ";
cin>>pilih;
switch(pilih)
{
case '1' :
cout<<"\nMasukkan data : ";
cin>>data;
input(data);
break;
case '2' :
hapus();
break;
case '3' :
cetak();
break;
case '4' :
exit(0);
break;
default :
cout<<"\nPilih ulang"<<endl;
}
cout<<"Kembali ke menu?(y/n)";
cin>>ulang;
}while (ulang=='y' || ulang=='Y');
}
int main()
{
inisialisasi();
menu();
return EXIT_SUCCESS;
}
b. Output Program
c. Analisis Program
Program di atas ini menggunakan single linked list non circular dengan
menggunakan header file #include <iostream>, #include
B. TUGAS PRAKTIKUM
1. Praktikum 1 : Program Linked List ( TROUBLESHOOT)
a. Syntax Program
#include <stdio.h>
#include <stdlib.h>
//definisikan struct
struct SNode{
int data;
struct SNode *next;
struct SNode *before;
};
int iterasi;
while(n_tampil!=NULL){
printf("%d ->", n_tampil->data);
n_tampil = n_tampil->next;
}
printf("\n");
}
tampil_list();
system("PAUSE");
return 0;
}
b. Output Program
c. Analisis Program
Program di atas ini menggunakan linkd list, di dalam program ini kita
di tuntut untuk mengatahui kesalah yang ada dan dituntut untuk
melakukan pembenaran. Berjalannya program ini yaitu pertama
dengan cara pendeklarasian #include <stdlib.h> lalu
pendefinisian struct struct SNode{ int data; struct SNode
*next; struct SNode *before;}; Kemudian pendeklarasian
struct Snode yang berisikan pointer *n_awal, node awal dari
linked list, *n_tampil, node bantu untuk tampilkan data ,
*n_bantu; node bantu untuk insert node baru, kemudian deklarasi
variabel iterasi yang bertipe data integer. Lalu pendeklarasian fungsi
inisialisasi, yaitu berisikan inisialisasi linked list n_awal = NULL;.
Kemudian deklarasi fungsi tampil_list yang di dalam n_tampil =
n_awal; kemudian terdapat perulangan yang mengandung kondisi
(n_tampil!=NULL) yang akan menampilkan printf("%d ->",
n_tampil->data); untuk menampilkan datanya n_tampil =
C. TUGAS RUMAH
1. Tugas Rumah 1 : Program Link List ( Wahana Jatim Park Malang )
a. Syntax Program
#include <stdio.h>
#include <windows.h>
#include <conio.h>
struct Node{
int data;
Node *next;
Node *bfr;
};
struct Node *head, *tail, *help;
void init(){
head=NULL;
}
int main()
{
int pil;
init();
{
system("cls");
system("color A0");
printf("±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±±±±±±±±±±±±±±±±±±±±±±\n");
printf("±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±±±±±±±±±±±±±±±±±±±±±±\n");
printf("±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±±±±±±±±±±±±±±±±±±±±±±\n\n");
printf(" ±±±± ±±±± ±±±±±±±±±±±± ±±±±±±±
±±±±±±± ±±±±±±±±±±± \n");
printf(" ±±±± ±±±± ±±±±±±±±±±±± ±±±±±±±±
±±±±±±±± ±±±±±±±±±±± \n");
printf(" ±±±± ±±±± ±±±±±±±±±±±± ±±±± ±±±±
±±±± ±±±± ±±±± \n");
printf(" ±±±±±±±±±±± ±±±± ±±±± ±±±± ±±±
±±± ±±±± ±±±±±±±±±±± \n");
printf(" ±±±±±±±±±±± ±±±± ±±±± ±±±± ±±
±± ±±±± ±±±±±±±±±±± \n");
printf(" ±±±±±±±±±±± ±±±± ±±±± ±±±± ±
± ±±±± ±±±±±±±±±±± \n");
printf(" ±±±± ±±±± ±±±±±±±±±±±± ±±±±
±±±± ±±±± \n");
printf(" ±±±± ±±±± ±±±±±±±±±±±± ±±±±
±±±± ±±±±±±±±±±± \n");
printf(" ±±±± ±±±± ±±±±±±±±±±±± ±±±±
±±±± ±±±±±±±±±±± \n\n");
printf("±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±±±±±±±±±±±±±±±±±±±±±±\n");
printf("±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±±±±±±±±±±±±±±±±±±±±±±\n");
printf("±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±±±±±±±±±±±±±±±±±±±±±±±±\n");
printf(" By : Aisya Rawdha\n\n");
printf("============================================\n");
printf("1. Pendaftaran Permainan Wahana Jatim
Park Malang \n");
printf("2. EXIT \n");
printf("============================================\n");
printf(" >>Pilihan ANDA : ");
scanf("%d",&pil);
switch(pil){
case 1:
do{
system("cls");
system("color 57");
printf("\n\n\n ");
printf("Pendaftaran Antrian
Wahana Jatim Park Malang\n\n");
printf("================================================\n
\n");
printf("1. Masukkan antrian
penumpang\n");
printf("2. Mulai masuk
permainan\n");
printf("3. Memberangkatkan
semua antrian\n");
printf("4. Menampilkan semua
antrian\n");
printf("5. Kembali ke menu
utama\n");
printf("6. Keluar\n");
printf("================================================\n
\n");
printf(" >> Pilihan ANDA :
");
scanf("%d",&pil);
switch(pil){
case 1:int no_karcis;
printf("\nMasukkan
Nomor Karcis : ");
scanf("%d",&no_karcis);
insert_node(no_karcis);
printf("\nData berhasil dimasukkan, diantaranya :
\n\n");
tampil(); printf("\n");
system("pause");
break;
case 2:
printf("\nAntrian Pertama Telah Masuk ke
Permainan\n\n");
masuk();
printf("Antrian Sekarang diantaranya : \n\n");
tampil(); printf("\n");
system("pause");
break;
case 3:
printf("\nSemua Antrian Masuk Dalam Permainan Wahana
Jatim Park");
msk_semua(); printf("\n")
system("pause");
break;
case 4:
printf("\nSemua Antrian : \n\n");
tampil(); printf("\n");
system("pause");
break;
case 5:
system("cls");
main();
break;
case 6:
system("cls");
printf("\n\n Terimakasih Atas Kunjungannya");
return 0;
break;
default:
printf("\n\n Maaf, Pilihan tidak tersedia\n");
system("pause");
break;
}
} while(pil!=5);
break;
case 2:
system("cls");
printf("\n\n Terimakasih Atas Kunjungannya");
break;
default :
printf("\n\n Maaf, Pilihan tidak tersedia\n");
system("pause");
system("cls");
break;
}
while(pil!=2);
}
}
b. Output Program
c. Analisis Program
Program di atas ini merupakan program linked list untuk pendaftaraan
antrian masuk ke wahana jatim park malang. Program ini berjalan
pertamanya dengan pendeklarasian header file #include <stdio.h>
#include <windows.h> #include <conio.h>, setelah
pendeklarasian header kemudian pendeklarasian struct Node *head,
*tail, * help; kemudian langsung ke fungsi utama yaitu int main,
pertama yang kita lakukan adalah mendaftarkan permain di dalam
wahana jatim park dengan menggunakan switch case, pilih nomor 1.
Kemudian di dalam case terdapat case lagi langsung menuju case 1 ,
yang pertama berisikan “Masukkan nomor karcis:” kita nenginputkan
nomor 1 untuk menginputkan nomor antiran, kemudian inputkan
nomor antrian Anda, dengan pemanggilan fungsi
insert_node(no_karcis) dan disimpan menginputkkan tanpa ada
batasan, dan nomor karcis yang telah diiinputkan akan keluar di
bawahnya dengan pemanggilan fungsi tampil(). Kemudian pilihan ke
dua yaitu dengan menuju ke case 2 “Mulai masuk permainan” dari
pilihan ini kita dapat memasukkan nomor antrian pertama yang
pertama kali diinputkan ke didalam pilihan 1 dengan pemanggilan
fungsi masuk(); kemudian setelah antrian pertama masuk, maka akan
keluar daftar antrian selanjutnya dengan memanggilan fungsi
tampil(); lalu menuju case 3 yaitu “Memberangkatkan semua antrian”
dengan mengeluarkan outputan “semua antrian dalam permainan
wahana jatim park, dengan pemanggilan fungsi msk_semua();,
kemudian pilihan ke empat menuju case 4 yaitu, untuk “menampilkan
ke semua antrian” dengan pemanggilan fungsi tampil() jika telah
antrian semua telah masuk dalam antrian maka semua antrian akan
kosong. Kemudian case 5 untuk mengembalikan program ke menu
utama dengan menaggilan fungsi utama main();. Lalu yang terakhir
adalah pilihan ke 6 yang langsung menuju ke case 6 “Terimakasih Atas
Kunjungannya". Jika pilihan yang Anda pilih selain angak 1 sampai 6,
maka pilihan default akan keluar outputan “Maaf, Pilihan tidak
tersedia”.
D. KESIMPULAN
Dari praktikum modul 6 mengenai materi “SINGLE & DOUBLE LINKED
LIST” ini, kita dapat mengambil kesimpulan bahwa:
1. Linked List merupakan suatu struktur data pengembangan dari konsep ADT
(Abstrak Data Type) yang bersifat dinamis.
2. Linked List juga dapat benar – benar dihapus / dibersihkan dari memory.
Linked List sebenarnya merupakan suatu typedata tersendiri
3. Ciri – ciri utama dari Linked List adalah, dia mempunyai minimal dua
elemen utama. Elemen – elemen itu adalah data dan pointer untuk
menunjukkan ke list berikutnya.
4. Operasi-operasi pada linked list, yaitu insert (menambahkan),
IsEmpty(menentuan kosong / tidak), Find First(menari elemen pertama),
Find Next (menari elemen yang telah ditunjuk), Retrieve(mengambil elemen
yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi),
Update(mengubah elemen yang ditunjuk), Delete Now(mengapus elemen
yang ditunjuk now), Delete Head(menghapus elemen yang ditunjuk head),
lear(menghapus linked list yang sudah ada).
5. Macam-macam linked list, yaitu single linked list non cirular, single linked
list circular, double link list non cirular, single linked list circular.