Linked List
PROGRAM
LINKED LIST
#include<iostream>
using namespace std;
struct data
{
char merk[15];
char ukuran[15]; //nama_field
informasi yang besiri data
char jumlah[15];
char harga[15];
data *next; // field
tipe data pointer yang berisi alamat
};
data *head=NULL,*tail = NULL; // delkarasi nama pointer
data *baru; // delkarasi nama pointer
void tambah()
{
baru = new data; //
membuat alamat baru
cout<<"
merk : ";
cin>>baru->merk;
cout<<"
ukuran : ";
cin>>baru->ukuran;
//input data dari depan
cout<<"
jumlah : ";
cin>>baru->jumlah;
cout<<"
harga : ";
cin>>baru->harga;
baru->next =NULL;
if(head==NULL)
{
head = baru;
tail
=baru;
// proses dimana ketika tidak ada data sama sekali maka akan
masuk ke if
head->next =
NULL;
// kemudian head diisi dengan pointer baru kemudian mengosongkan
variabel selanjutnya
}
else
{
baru->next=head;
// ketika head tidak sama dengan 0 maka node selanjutnya akan
diisi dengan nilai head
head = baru; // kemudian depan diisi dengan variabel baru
}
}
void tambah_belakang()
{
baru=new data;
cout<<"
merk : ";
cin>>baru->merk;
cout<<"
ukuran : ";
cin>>baru->ukuran;
//input data
cout<<"
jumlah : ";
cin>>baru->jumlah;
cout<<"
harga : ";
cin>>baru->harga;
baru->next=NULL;
if(head==NULL)
{
head = baru;
tail = baru; // pertukaran data dari baru ke dalam
head
head->next
=NULL; // mengosongkan node selanjutnya
}
else
{
tail->next=
baru;
// ketika head tidak sama
dengan 0 maka tail node selanjutnya akan diisi dengan data baru
tail = baru; // kemudian tail digeser ke baru
}
}
void hapus_depan()
{
data *hapus;
hapus = head;
if(head==NULL)
{
cout<<"
list is empty "<<endl; //
proses ketika belum ada data yang masuk
}
else
{
cout<<"
Data yang keluar \n";
cout<<"___________________\n";
cout<<"
merk :
"<<head->merk<<endl;
cout<<"
ukuran : "<<head->ukuran<<endl;
cout<<"
jumlah :
"<<head->jumlah<<endl;
//output data yang keluar dari depan
cout<<"
harga :
"<<head->harga<<endl;
head =
hapus->next; // proses pergeseran head ke data berikutnya
hapus=NULL; // kemudian data yang di head awal tadi
dikosongkan
}
}
void hapus_belakang()
{
data *hapus;
hapus = head;
if(hapus==NULL)
{
cout<<"
list is empty "<<endl; //
proses ketika belum ada data yang masuk
}
else
{
if(head->next==NULL)
// proses ini digunakan ketika data yang masuk hanya satu data.
dengan algotirma apakah data setelah head kosong?
{
cout<<"
Data yang keluar \n";
cout<<"___________________\n";
cout<<"
merk :
"<<hapus->merk<<endl;
cout<<"
ukuran :
"<<hapus->ukuran<<endl;
//output data yang keluar dari depan
cout<<"
jumlah : "<<hapus->jumlah<<endl;
cout<<"
harga :
"<<hapus->harga<<endl;
hapus=NULL; //mengosongkan nilai
head=NULL;
}
else
{
while(hapus->next->next!=NULL)
// kemudian jika ada lebih dari 1 data maka, apakah data setelah
setelahnya lagi kosong?
{
hapus =
hapus->next;
//jika kondisi memenuhi maka node hapus akan digeser ke
sebelahnya.
} // kemudiam diulang sampai syarat tidak
memenuhi
cout<<"
Data yang keluar \n";
cout<<"___________________\n";
cout<<"
merk :
"<<hapus->next->merk<<endl;
cout<<"
ukuran :
"<<hapus->next->ukuran<<endl;
cout<<"
jumlah :
"<<hapus->next->jumlah<<endl; // output data terakhir
cout<<"
harga :
"<<hapus->next->harga<<endl;
tail = hapus; // tail digeser ke belakang 1 . yaitu ke node
hapus
hapus->next =
NULL;
// mengosongkan data
setelah hapus yaitu data terakhir
}
}
}
void view()
{
baru = head;
if(baru==NULL) //proses pengujian apakah data masih kosong ?
{
cout<<"
list is empty "<<endl;
}
else
{
while(baru !=NULL) // pengujian apakah data tidak sama dengan
null
{
cout<<" merk :
"<<baru->merk<<endl;
cout<<" ukuran :
"<<baru->ukuran<<endl;
cout<<" jumlah :
"<<baru->jumlah<<endl;
//output data
cout<<" harga :
"<<baru->harga<<endl;
cout<<"___________________\n";
baru =
baru->next; // menggeser data ke data
sebelahnya
}
}
}
main()
{
int pilih;
do
{
cout<<"\n1. input depan
\n";
cout<<"2. input belakang\n";
cout<<"3. hapus depan
\n";
cout<<"4. hapus belakang\n";
cout<<"5. view\n";
cout<<"pilih : ";
cin>>pilih;
switch(pilih)
{
case 1:
tambah();
break;
case 2:
tambah_belakang();
break;
case 3:
hapus_depan();
break;
case 4:
hapus_belakang();
break;
case 5:
view();
break;
}
}
while(pilih<=5);
}
Hasil program :
kalo bisa tambahin hapus tengah biar enak kita bisa memilih mana yang ingin dhapus
ReplyDeletemakasih kak sarannya.
Delete