Tugas Akhir Pertemuan X

LINKED LIST

  1. Buatlah program menu untuk menam[pilkan 2 program di atas !

Jawab :

#include<iostream>
#include<conio.h>
#include<stdlib.h>
#include<iomanip>
#define true 1
#define false 0
using namespace std;
typedef struct node *simpul;
typedef struct node1 *simpul1;

struct node
{
char Isi;
simpul kanan;
simpul kiri;
};
struct node1
{
char Isi1;
simpul1 Next;
};

void Sisip_DepanS(simpul1 &L, char elemenS);
void Sisip_BelakangS(simpul1 &L, char elemenS);
void Sisip_TengahS1(simpul1 &L, char elemenS1, char elemenS2);
void Sisip_TengahS2(simpul1 &L, char elemenS1, char elemenS2);
void Hapus_DepanS(simpul1 &L);
void Hapus_BelakangS(simpul1 &L);
void Hapus_TengahS(simpul1 &L, char elemenS);
void CetakS(simpul1 L);
void Sisip_Depan(simpul &DL, char elemen);
void Sisip_Belakang(simpul &DL, char elemen);
void Sisip_Tengah1(simpul &DL, char elemen1, char elemen2);
void Sisip_Tengah2(simpul &DL, char elemen1, char elemen2);
void Hapus_Depan(simpul &DL);
void Hapus_Belakang(simpul &DL);
void Hapus_Tengah(simpul &DL, char elemen);
void Cetak(simpul DL);

main()
{
cout<<“=============================”<<endl;
cout<<endl;
int pil;
cout<<“=====PROGRAM LINKED LIST=====”<<endl;
cout<<“1. Singly Linked List”<<endl;
cout<<“2. Doubly Linked List”<<endl;
cout<<“\nPilihan: “; cin>>pil;
cout<<endl<<endl;
switch(pil)
{
char huruf, huruf2;
case 1:
{
simpul1 L=NULL; //Pastikan Bahwa L kosong
cout<<“==OPERASI PADA SINGLE LINKED LIST==”<<endl<<endl;
cout<<“Penyisipan Simpul Di Depan”<<endl<<endl;
cout<<“Masukkan Huruf: “; cin>>huruf;
Sisip_DepanS(L, huruf);
cout<<“Masukkan Huruf: “; cin>>huruf;
Sisip_DepanS(L, huruf);
cout<<“Masukkan Huruf: “; cin>>huruf;
Sisip_DepanS(L, huruf);
cout<<“Masukkan Huruf: “; cin>>huruf;
Sisip_DepanS(L, huruf);
CetakS(L);
cout<<“\n\nPenyisipan Simpul Di Belakang”<<endl<<endl;
cout<<“Masukkan Huruf: “; cin>>huruf;
Sisip_BelakangS(L, huruf);
cout<<“Masukkan Huruf: “; cin>>huruf;
Sisip_BelakangS(L, huruf);
cout<<“Masukkan Huruf: “; cin>>huruf;
Sisip_BelakangS(L, huruf);
cout<<“Masukkan Huruf: “; cin>>huruf;
Sisip_BelakangS(L, huruf);
CetakS(L);
cout<<endl<<endl<<“Masukan Huruf: “; cin>>huruf;
cout<<” Disisip Setelah Huruf: “; cin>>huruf2;
cout<<huruf<<” Disisip Setelah “<<huruf2<<endl;
Sisip_TengahS1(L, huruf, huruf2);
CetakS(L);
cout<<endl<<endl<<“Masukan Huruf: “; cin>>huruf;
cout<<” Disisip Setelah Huruf: “; cin>>huruf2;
cout<<huruf<<” Disisip Setelah “<<huruf2<<endl;
Sisip_TengahS2(L, huruf, huruf2);
CetakS(L);
cout<<endl<<endl<<“Setelah Hapus Simpul Depan “<<endl;
Hapus_DepanS(L);
CetakS(L);
cout<<endl<<endl<<“Setelah Hapus Simpul Belakang “<<endl;
Hapus_BelakangS(L);
CetakS(L);
cout<<“\n\nMasukkan Huruf Tengah Yang akan dihapus: “; 
cin>>huruf;
Hapus_TengahS(L, huruf);
CetakS(L);
getch();
}
break;

case 2:
{
simpul DL=NULL; //Pastikan Bahwa L kosong
int i=0;
cout<<“==OPERASI PADA DOUBLE LINKED LIST==”<<endl<<endl;
cout<<“Penyisipan Simpul Di Depan”<<endl<<endl;
for(i=1;i<=4;i++)
{
cout<<“Masukkan Huruf: “; cin>>huruf;
Sisip_Depan(DL, huruf);
}
Cetak(DL);
cout<<“\n\nPenyisipan Simpul Di Belakang”<<endl<<endl;
for(i=1;i<=4;i++)
{
cout<<“Masukkan Huruf: “; cin>>huruf;
Sisip_Belakang(DL, huruf);
}
Cetak(DL);
cout<<endl<<endl<<“Masukan Huruf: “; cin>>huruf;
cout<<” Disisip Setelah Huruf: “; cin>>huruf2;
cout<<huruf<<” Disisip Setelah “<<huruf2<<endl;
Sisip_Tengah1(DL, huruf, huruf2);
Cetak(DL);
cout<<endl<<endl<<“Masukan Huruf: “; cin>>huruf;
cout<<” Disisip Setelah Huruf: “; cin>>huruf2;
cout<<huruf<<” Disisip Setelah “<<huruf2<<endl;
Sisip_Tengah2(DL, huruf, huruf2);
Cetak(DL);
cout<<endl<<endl<<“Setelah Hapus Simpul Depan “<<endl;
Hapus_Depan(DL);
Cetak(DL);
cout<<endl<<endl<<“Setelah Hapus Simpul Belakang “<<endl;
Hapus_Belakang(DL);
Cetak(DL);
cout<<“\n\nMasukkan Huruf Tengah Yang akan dihapus: “; 
cin>>huruf;
Hapus_Tengah(DL, huruf);
Cetak(DL);
getch();
}
break;
default: cout<<“Pilihan Tidak Ada”<<endl;
}
return 0;
}

void Sisip_DepanS(simpul1 &L, char elemenS)
{
simpul1 baru; //=new simpul;
baru=(simpul1)malloc(sizeof(simpul1));
baru->Isi1=elemenS;
baru->Next=NULL;
if(L==NULL)
L=baru;
else
{
baru->Next=L;
L=baru;
}
}

void Sisip_TengahS1(simpul1 &L, char elemenS1, char elemenS2)
{
simpul1 bantu, baru;
baru=(simpul1)malloc(sizeof(simpul1));
baru->Isi1=elemenS1;
baru->Next=NULL;
if(L==NULL)
cout<<“List Kosong…….”<<endl;
else
{
bantu=L;
while(bantu->Isi1!=elemenS2)bantu=bantu->Next;
baru->Next=bantu->Next;
bantu->Next=baru;
}
}

void Sisip_TengahS2(simpul1 &L, char elemenS1, char elemenS2)
{
simpul1 bantu, baru;
baru=(simpul1)malloc(sizeof(simpul1));
baru->Isi1=elemenS1;
baru->Next=NULL;
if(L==NULL)
cout<<“List Kosong…….”<<endl;
else
{
bantu=L;
while(bantu->Isi1!=elemenS2)bantu=bantu->Next;
baru->Next=bantu->Next;
bantu->Next=baru;
}
}

void Sisip_BelakangS(simpul1 &L, char elemenS)
{
simpul1 bantu, baru;
baru=(simpul1)malloc(sizeof(simpul1));
baru->Isi1=elemenS;
baru->Next=NULL;
if(L==NULL)
L=baru;
else
{
bantu=L;
while(bantu->Next!=NULL)
bantu=bantu->Next;
bantu->Next=baru;
}
}

void CetakS(simpul1 L)
{
simpul1 bantu;
if(L==NULL)
cout<<“Linked List Kosong……..”<<endl;
else
{
bantu=L;
cout<<“Isi Linked List: “;
while(bantu->Next!=NULL)
{
cout<<bantu->Isi1<<“–>”;
bantu=bantu->Next;
}
cout<<bantu->Isi1;
}
}

void Hapus_DepanS(simpul1 &L)
{
simpul1 Hapus;
if(L==NULL)
cout<“Linked List Kosong……..”;
else
{
Hapus=L;
L=L->Next;
Hapus->Next=NULL;
free(Hapus);
}
}

void Hapus_BelakangS(simpul1 &L)
{
simpul1 bantu, hapus;
if(L==NULL)
cout<“Linked List Kosong……..”;
else
{
bantu=L;
while(bantu->Next->Next!=NULL)bantu=bantu->Next;
hapus=bantu->Next;
bantu->Next=NULL;
free(hapus);
}
}

void Hapus_TengahS(simpul1 &L, char elemenS)
{
simpul1 bantu, hapus;
if(L==NULL)
cout<“Linked List Kosong……..”;
else
{
bantu=L;
while(bantu->Next->Isi1!=elemenS)bantu=bantu->Next;
hapus=bantu->Next;
bantu->Next=bantu->Next->Next;
hapus->Next=NULL;
free(hapus);
}
}
//**********************************************************************
void Sisip_Depan(simpul &DL, char elemen)
{
simpul baru; //=new simpul;
baru=(simpul)malloc(sizeof(simpul));
baru->Isi=elemen;
baru->kanan=NULL;
baru->kiri=NULL;
if(DL==NULL)
DL=baru;
else
{
baru->kanan=DL;
DL->kiri=baru;
DL=baru;
}
}

void Sisip_Tengah1(simpul &DL, char elemen1, char elemen2)
{
simpul bantu, baru;
baru=(simpul)malloc(sizeof(simpul));
baru->Isi=elemen1;
baru->kanan=NULL;
baru->kiri=NULL;
if(DL==NULL)
cout<<“List Kosong…….”<<endl;
else
{
bantu=DL;
while(bantu->Isi!=elemen2)
bantu=bantu->kanan;
baru->kanan=bantu->kanan;
baru->kiri=bantu;
bantu->kanan->kiri=baru;
bantu->kanan=baru;
}
}

void Sisip_Tengah2(simpul &DL, char elemen1, char elemen2)
{
simpul bantu, baru;
baru=(simpul)malloc(sizeof(simpul));
baru->Isi=elemen1;
baru->kanan=NULL;
baru->kiri=NULL;
if(DL==NULL)
cout<<“List Kosong…….”<<endl;
else
{
bantu=DL;
while(bantu->kanan->Isi!=elemen2)
bantu=bantu->kanan;
baru->kanan=bantu->kanan;
baru->kiri=bantu;
bantu->kanan->kiri=baru;
bantu->kanan=baru;
}
}

void Sisip_Belakang(simpul &DL, char elemen)
{
simpul bantu, baru;
baru=(simpul)malloc(sizeof(simpul));
baru->Isi=elemen;
baru->kanan=NULL;
baru->kiri=NULL;
if(DL==NULL)
DL=baru;
else
{
bantu=DL;
while(bantu->kanan!=NULL)
bantu=bantu->kanan;
bantu->kanan=baru;
baru->kiri=bantu;
}
}

void Cetak(simpul DL)
{
simpul bantu;
if(DL==NULL)
cout<<“Linked List Kosong……..”<<endl;
else
{
bantu=DL;
cout<<“Isi Linked List: “;
while(bantu->kanan!=NULL)
{
cout<<bantu->Isi<<“<==>”;
bantu=bantu->kanan;
}
cout<<bantu->Isi;
}
}

void Hapus_Depan(simpul &DL)
{
simpul Hapus;
if(DL==NULL)
cout<“Linked List Kosong……..”;
else
{
Hapus=DL;
DL=DL->kanan;
DL->kiri=NULL;
Hapus->kanan=NULL;
free(Hapus);
}
}

void Hapus_Belakang(simpul &DL)
{
simpul bantu, hapus;
if(DL==NULL)
cout<“Linked List Kosong……..”;
else
{
bantu=DL;
while(bantu->kanan->kanan!=NULL)bantu=bantu->kanan;
hapus=bantu->kanan;
bantu->kanan=NULL;
hapus->kiri=NULL;
free(hapus);
}
}

void Hapus_Tengah(simpul &DL, char elemen)
{
simpul bantu, hapus;
if(DL==NULL)
cout<“Linked List Kosong……..”;
else
{
bantu=DL;
while(bantu->kanan->Isi!=elemen)bantu=bantu->kanan;
hapus=bantu->kanan;
bantu->kanan->kanan->kiri=bantu;
bantu->kanan=bantu->kanan->kanan;
hapus->kanan=NULL;
hapus->kiri=NULL;
free(hapus);
}
}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s