Assalamu'alaikum...
Berkaitan dengan materi yang sudah saya dapatkan di mata kuliah Algoritma dan struktur data yang berjudul linkedlist...kali ini saya akan berbagi sebuah program dimana didalamnya ada double linklist dan program ini bertujuan untuk gimana sih memasukkan banyak data dan menyimpan dalam suatu ruang memori komputer dan kita bisa menghapus, dan mencari data tersebut dengan hanya memasukkan namanya saja....ini source codenya bisa dicopas kok tenang aja.... :D
#include <iostream>
using namespace std;
struct node
{
float angka;
string nama;
string alamat;
struct node *next;
struct node *back;
};
void insert(struct node *&kepala, struct node *&ekor)
{
struct node *nodebaru;
nodebaru = new struct node;
cin.ignore();
cout<<"\nMasukkan Nama\t: ";
getline(cin,nodebaru->nama);
cout<<"Masukkan Alamat\t: ";
getline(cin,nodebaru->alamat);
cout<<"Masukkan IP\t: ";
cin>>nodebaru->angka;
if (nodebaru->angka<=4){
nodebaru->next=nodebaru->back = NULL;
if (ekor != NULL)
{
ekor->next = nodebaru;
nodebaru->back=ekor;
ekor = nodebaru;
ekor->next=NULL;
}
else
{
ekor = kepala = nodebaru;
}
}
else{
cout<<"\nMaaf IP maksimal 4.....data ini tidak akan ditampilkan...\nSilahkan masukkan data dengan benar"<<endl;
system("pause");
}
}
void insertFirst(struct node *&kepala, struct node *ekor)
{
struct node *nodebaru;
nodebaru = new struct node;
cout<<"Masukkan Data Mahasiswa dari depan"<<endl;
cin.ignore();
cout<<"\nMasukkan nama Baru\t: ";
getline(cin,nodebaru->nama);
cout<<"Masukkan alamat Baru\t: ";
getline(cin,nodebaru->alamat);
cout<<"Masukkan IP Baru\t: ";
cin>>nodebaru->angka;
if (nodebaru->angka<=4){
if (kepala == NULL)
{
kepala = ekor =nodebaru;
nodebaru->next = nodebaru->back = NULL;
}
else
{
kepala->back = nodebaru;
nodebaru->next = kepala;
nodebaru->back = NULL;
kepala = nodebaru;
}
}else{
cout<<"\nMaaf IP maksimal 4.....\ndata ini tidak akan ditampilkan...terimakasih"<<endl;
system("pause");
}
}
void cari(struct node * kepala)
{
struct node * tempe, *nodebaru;
nodebaru = new struct node;
cin.ignore();
cout<<"Coba deh masukin NAMA yang dicari : ";
getline(cin, nodebaru->nama);
tempe=kepala;
if (tempe->nama == nodebaru->nama)
{
cout<<"------------------------------------";
cout<<"\n|| Naaaahhhh tuh KETEMU kan....!! ||\n";
cout<<"------------------------------------";
cout<<"\n\nNama\t: "<<tempe->nama<<endl;
cout<<"Alamat\t: "<<tempe->alamat<<endl;
cout<<"IP\t: "<<tempe->angka<<endl;
}
else
{
while(tempe != NULL)
{
if (tempe->nama == nodebaru->nama)
{
cout<<"------------------------------------";
cout<<"\n|| Naaaahhhh tuh KETEMU kan....!! ||\n";
cout<<"------------------------------------";
cout<<"\n\nNama\t: "<<tempe->nama<<endl;
cout<<"Alamat\t: "<<tempe->alamat<<endl;
cout<<"IP\t: "<<tempe->angka<<endl;
break;
}
tempe = tempe->next;
}
if(tempe == NULL)
cout<<"\nYaaahhh gak ada tuuh...coba deh cek lagi datanya..."<<endl;
}
}
void ss(struct node * kepala,struct node * ekor){//sisipkan
struct node *nodebaru, *set,*seb,*tempe=kepala;
string x;
nodebaru= new struct node;
cout<<"Nih kalo mau inputin data lagi...."<<endl;
cin.ignore();
cout<<"\nMasukkan nama Baru\t: ";
getline(cin,nodebaru->nama);
cout<<"Masukkan alamat Baru\t: ";
getline(cin,nodebaru->alamat);
cout<<"Masukkan IP Baru\t: ";
cin>>nodebaru->angka;
if (nodebaru->angka<=4){
nodebaru->next=NULL;
nodebaru->back=NULL;
cin.ignore();
cout<<"\nMasukkan data sebelum Siapa : ";
getline(cin,x);
set=kepala;
do
{
seb = set;
set = set->next;
}
while (set->nama!=x);
{
nodebaru->back= seb;
nodebaru->next= set;
set->back= nodebaru;
seb->next= nodebaru;
}
}else{
cout<<"\nMaaf IP maksimal 4.....data ini tidak akan ditampilkan...terimakasih"<<endl;
system("pause");
}
}
void hapus(struct node *&kepala){
struct node *tempe=kepala,*nodebaru;
nodebaru= new struct node;
cin.ignore();
cout<<"Masukkan Nama yang dihapus : ";
getline(cin,nodebaru->nama);
nodebaru->next=nodebaru->back=NULL;
if (kepala->nama == nodebaru->nama)
{
kepala=kepala->next;
}
else
{
while(tempe->next != NULL)
{
if (tempe->next->nama == nodebaru->nama)
{
tempe->next=tempe->next->next;
break;
}
tempe = tempe->next;
}
}
cout<<"\nData Berhasil dihapus\n";
}
void hapusbelakang(struct node *&ekor){
struct node *tempe=ekor,*nodebaru;
nodebaru= new struct node;
cin.ignore();
cout<<"Masukkan Nama yang dihapus : ";
getline(cin,nodebaru->nama);
nodebaru->back=NULL;
if (ekor->nama == nodebaru->nama)
{
ekor=ekor->back;
}
else
{
while(tempe->back != NULL)
{
if (tempe->back->nama == nodebaru->nama)
{
tempe->back=tempe->back->back;
break;
}
tempe = tempe->back;
}
}
cout<<"\nData Berhasil dihapus\n";
}
void tampilbelakang(struct node *ekor){
struct node *tempe ;
tempe=ekor;
while( tempe != NULL)
{
cout<<"\nNama\t: "<<tempe->nama<<endl;
cout<<"Alamat\t: "<<tempe->alamat<<endl;
cout<<"IP\t: "<<tempe->angka<<endl;
tempe = tempe->back;
}
}
void tampilkan(struct node *kepala)
{
struct node *tempe;
tempe = kepala;
while(tempe != NULL)
{
cout<<"\nNama\t: "<<tempe->nama<<endl;
cout<<"Alamat\t: "<<tempe->alamat<<endl;
cout<<"IP\t: "<<tempe->angka<<endl;
tempe = tempe->next;
}
}
void menu(){
cout<<"\n+=========================== M e N u =========================+"<<endl;
cout<<"\t\t 1. Masukkan data link"<<endl;
cout<<"\t\t 2. Masukan Data Dari Depan"<<endl;
cout<<"\t\t 3. Cari Data"<<endl;
cout<<"\t\t 4. Hapus Data dari depan"<<endl;
cout<<"\t\t 5. Hapus Data dari balakang"<<endl;
cout<<"\t\t 6. Tambahkan Data dari Manapun"<<endl;
cout<<"\t\t 7. Tampilkan Data dari depan"<<endl;
cout<<"\t\t 8. Tampilkan Belakang"<<endl;
cout<<"\t\t 0. Keluar"<<endl;
cout<<"+=============================================================+"<<endl;
cout<<"Masukkan Pilihan Anda : ";
}
int main()
{
int m,j;
string x;
struct node *kepala, *tempe, *nodebaru, *ekor;
kepala = ekor = nodebaru = tempe = NULL;
do{
system("cls");
menu();
cin>>m;
switch (m){
case 1 :
system("cls");
cout<<"Masukkan berapa jumlah data : ";
cin>>j;
for(int i=1;i<=j;i++){
cout<<"\nAnda Menginputkan Data Ke- "<<i<<endl;
insert(kepala, ekor);
}
system("pause");
break;
case 2 :
system("cls");
cin.ignore();
cout<<"Kembali x "<<endl;
getline(cin,x);
if (x!="x"){
insertFirst(kepala, ekor);
}
else{
menu();
cout<<"\n";
}
system("pause");break;
case 3 :
system("cls");
cari(kepala);
system("pause");break;
case 4 :
system("cls");
hapus(kepala);
system("pause");break;
case 5 :
system("cls");
hapusbelakang(ekor);
system("pause");break;
case 6 :
system("cls");
ss(kepala,ekor);
system("pause");break;
case 7 :
system("cls");
cout<<"Nih Data yang anda inputkan tadi.....tapi dari depan...\n";
tampilkan(kepala);
system("pause");break;
case 8 :
system("cls");
cout<<"Nih Data yang anda inputkan tadi.....tapi dari belakang...\n";
tampilbelakang(ekor);
system("pause");break;
}
}while (m!=0);system("pause");
}
Oke sekian dulu...hehe...maaf ga ada penjelasan secara detailnya......selamat mengcopas ria.....
wassalamualaikum....:)
Tidak ada komentar:
Posting Komentar