02 – Linked List Implementation – 2101676504 – Alexander Michael Oei

Linked List Implementation

Pada dasarnya Link dibagi menjadi beberapa bagian, diantaranya:

Single Linked List, Polynomial Representation, Circular Single Linked List, Doubly Linked List, Circular Doubly Linked List, Header Linked List

* Single Linked List

Contohnya:

#include <stdio.h>
#include <iostream.h>
#include <conio.h>
struct TNode{
int data;
TNode *next;
};
TNode *head, *tail;
void init(){
head = NULL;
tail = NULL;
}
int isEmpty(){
if(tail == NULL) return 1;
else return 0;
}
void insertDepan(int databaru){
TNode *baru;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1){
head=tail=baru;
tail->next=NULL;
}
else {
baru->next = head;
head = baru;
}
cout<<“Data masuk\n”;
}
void insertBelakang(int databaru){
TNode *baru,*bantu;
baru = new TNode;
baru->data = databaru;
baru->next = NULL;
if(isEmpty()==1){
head=baru;
tail=baru;
tail->next = NULL;
}
else {
tail->next = baru;
tail=baru;
}
cout<<“Data masuk\n”;
}
void tampil(){
TNode *bantu;
bantu = head;
if(isEmpty()==0){
while(bantu!=NULL){
cout<<bantu->data<<” “;
bantu=bantu->next;
}
} else cout<<“Masih kosong\n”;
}
void hapusDepan(){
TNode *hapus;
int d;
if (isEmpty()==0){
if(head!=tail){
hapus = head;
d = hapus->data;
head = head->next;
delete hapus;
} else {
d = tail->data;
head=tail=NULL;
}
cout<<d<<“terhapus”;
} else cout<<“Masih kosong\n”;
}
void hapusBelakang(){
TNode *bantu,*hapus;
int d;
if (isEmpty()==0){
bantu = head;
if(head!=tail){
while(bantu->next!=tail){
bantu = bantu->next;
}
hapus = tail;
tail=bantu;
d = hapus->data;
delete hapus;
tail->next = NULL;
}else {
d = tail->data;
head=tail=NULL;
}
cout<<d<<” terhapus\n”;
} else cout<<“Masih kosong\n”;
}
void clear()
{
TNode *bantu,*hapus;
bantu = head;
while(bantu!=NULL)
{
hapus = bantu;
bantu = bantu->next;
delete hapus;
}
head = NULL;
printf(“CLEAR”);
}
main()
{
int pil,databaru;
do
{
clrscr();
cout<<endl<<endl;
cout<<” ===========================”<<endl;
cout<<” = PROGRAM LINKED LIST =”<<endl;
cout<<” ===========================”<<endl;
cout<<” = 1. Insert Depan =”<<endl;
cout<<” = 2. Insert Belakang =”<<endl;
cout<<” = 3. Delete Depan =”<<endl;
cout<<” = 4. Delete Belakang =”<<endl;
cout<<” = 5. Tampil Data =”<<endl;
cout<<” = 6. Clear =”<<endl;
cout<<” = 7. Exit =”<<endl;
cout<<” ===========================”<<endl;
cout<<” Masukan Pilihan : “;cin>>pil;
switch (pil)
{
case 1: clrscr();{
cout<<“Masukkan Data = “;
cin>>databaru;
insertDepan(databaru);
break;
}
case 2: clrscr();{
cout<<“Masukkan Data = “;
cin>>databaru;
insertBelakang(databaru);
break;
}
case 3: clrscr();{
hapusDepan();
break;
}
case 4: clrscr();{
hapusBelakang();
break;
}
case 5: clrscr();{
tampil();
break;
}
case 6: clrscr();{
clear();
break;
}
case 7: {
return 0;
break;
}
default : clrscr();{
cout<<“\n Maaf, Pilihan yang anda pilih tidak tersedia!”;
}
}
getch();
}
while(pil!=7);
}

*Polynomial Representation

Polinomial dari : 6×3 + 9×2 + 1

Setiap istilah individu dalam polinom terdiri dari dua bagian, koefisien dan kekuatan. Di sini, 6, 9, 7, dan 1 adalah koefisien dari persyaratan yang masing-masing memiliki 3, 2, 1, dan 0 sebagai kekuatan masing-masing. Setiap istilah polinomial dapat direpresentasikan sebagai simpul dari linked list.

*Circular Single Linked List

Secara sirkuler, node terakhir berisi pointer ke node pertama, Kita bisa memiliki daftar terkait melingkar dan juga daftar ganda yang saling terkait. Tidak ada penyimpanan nilai NULL dalam daftar.

*Doubly Linked List

Daftar ganda atau linked list dua arah adalah data daftar tertaut. Struktur dengan dua link, satu yang berisi referensi ke data berikutnya dan satu yang berisi referensi ke data sebelumnya.

Contohnya:

#include <iostream>//pada aplikasi Dev.C++ compilenya mendukung format iostream seperti ini
#include <conio.h>
#include <stdio.h>
#include <windows.h>//mendukung format system(“CLS”) sebagai peganti clrscr()
using namespace std;//penambahan untuk header iostream
int pilih; void pilihan();
void insert_data();
void hapus_data();
void cetak_data();
struct node
{
int nomorinduk;
char nama [40];
char gender [20];
float nilai;
node *prev, *next;
};
node *baru, *head=NULL, *tail=NULL,*help,*del;
main()//interface monitor
{
do
{
system(“cls”);
cout<<“\tLIN. DOUBLY LINKED LIST”<<endl;
cout<<“\t==========================”<<endl;
cout<<“\t1. INSERT DATA”<<endl;
cout<<“\t2. HAPUS DATA”<<endl;
cout<<“\t3. CETAK DATA”<<endl;
cout<<“\t4. EXIT”<<endl;
cout<<“\tPilihan (1 – 4) : “;
cin>>pilih;
cout<<endl<<endl;
pilihan();
cout<<“===============================”<<endl;
}
while(pilih!=4);
}
void pilihan()//fungsi “pilihan” untuk pemrosesan
{
if(pilih==1)
insert_data();
else if(pilih==2)
hapus_data();
else if(pilih==3)
cetak_data();
else
{
cout<<“EXIT”;
cout<<“\nSampai Jumpa lagi”<<endl;
}
}
void buat_baru()//fungsi membuat data baru
{
baru = new(node);
cout<<“Masukkan Nomor Induk: “;cin>>baru->nomorinduk;
cout<<“Masukkan Nama: “;cin>>baru->nama;
cout<<“Masukkan Gender: “;cin>>baru->gender;
cout<<“Masukkan Nilai: “;cin>>baru->nilai;
cout<<“\n\t—Data telah dimasukkan—“;
cout<<“\n\nPRESS ENTER TO CONTINUE…”;
getch();
baru->prev=NULL;
baru->next=NULL;
}
void insert_data()
{
buat_baru();
if(head==NULL)
{
head=baru;
tail=baru;
}
else
{
baru->next=head;
head->prev=baru;
head=baru;
}
cout<<endl<<endl;
}
void hapus_data()//fungsi penghapusan data
{
int hapus,nomorinduk;
if(head==NULL)
{
cout<<“\nLinked List kosong, \nPenghapusan tidak dapat dilakukan”<<endl;//data yang habis maka tampilannya
}
else
{
hapus=head->nomorinduk;
cout<<“\nData yang dihapus adalah “;//pemilihan data yang akan dihapus
cin>>nomorinduk;
del = head;
head = head->next;
delete del;
}
}
void cetak_data()
{
if (head==NULL)
cout<<“\nData tidak dapat ditemukan!”<<endl;//data yang kosong
else
{
help=head;
while(help!=NULL)
{
cout<<” Nomor Induk : “<<help->nomorinduk;//data akan muncul dengan tampilan
cout<<” Nama : “<<help->nama;
cout<<” Gender : “<<help->gender;
cout<<” Nilai : “<<help->nilai<<endl;
help=help->next;
}
}
getch();
}

*Circular Doubly Linked List

Polanya mirip dengan linked list melingkar tunggal, tapi jumlah pointer di setiap node di sini adalah 2 pointer.

Contoh:

 

*Header Link List

Sebuah header linked list adalah tipe khusus linked list yang berisi node header di awal daftar. Jadi, dalam sebuah header linked list, START (L) tidak akan mengarah ke simpul pertama dari daftar tapi START (L) akan berisi alamat simpul header.

 

This entry was posted in Uncategorized. Bookmark the permalink.

2 Responses to 02 – Linked List Implementation – 2101676504 – Alexander Michael Oei

Leave a Reply

Your email address will not be published. Required fields are marked *