Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdlib.h>
- using namespace std;
- struct data
- {
- string namaBarang;
- string deskripsiBarang;
- string merk;
- int harga;
- int stock;
- };
- struct simpul
- {
- int index;
- data Data;
- simpul *next=NULL;
- } *awal=NULL,*akhir=NULL,*bantu,*bantu2,*baru;
- int index=-1;
- void input(int indx)
- {
- baru->index=indx;
- cout << "Masukkan nama barang = ";
- cin >> baru->Data.namaBarang;
- cout << "Masukkan deskripsi barang = ";
- cin >> baru->Data.deskripsiBarang;
- cout << "Masukka merk barang = ";
- cin >> baru->Data.merk;
- cout << "Masukkan harga barang = ";
- cin >> baru->Data.harga;
- cout << "Masukkan jumlah stock barang = ";
- cin >> baru->Data.stock;
- }
- void inputData()
- {
- index++;
- baru=new simpul;
- input(index);
- baru->next=NULL;
- if (awal==NULL)
- {
- awal=akhir=baru;
- }
- else
- {
- akhir->next=baru;
- akhir=baru;
- }
- }
- //bubble short
- //void shortAsc()
- //{
- // simpul *tmp;
- // bantu=awal;
- // for (int i=0;i<index;i++)
- // {
- // bantu=bantu2=awal;
- // while(bantu->next!=NULL)
- // {
- // if (bantu->Data.namaBarang>bantu->next->Data.namaBarang)
- // {
- // tmp=bantu->next;
- // bantu->next=bantu->next->next;
- // tmp->next=bantu;
- //
- // if(bantu==awal)
- // {
- // awal=bantu2=tmp;
- // }
- // else
- // {
- // bantu2->next=tmp;
- // }
- // bantu=tmp;
- // }
- // bantu2=bantu;
- // bantu=bantu->next;
- // }
- // }
- //
- //}
- //
- //void shortDsc()
- //{
- // simpul *tmp;
- // bantu=awal;
- // for (int i=0;i<index;i++)
- // {
- // bantu=bantu2=awal;
- // while(bantu->next!=NULL)
- // {
- // if (bantu->Data.namaBarang < bantu->next->Data.namaBarang)
- // {
- // tmp=bantu->next;
- // bantu->next=bantu->next->next;
- // tmp->next=bantu;
- //
- // if(bantu==awal)
- // {
- // awal=bantu2=tmp;
- // }
- // else
- // {
- // bantu2->next=tmp;
- // }
- // bantu=tmp;
- // }
- // bantu2=bantu;
- // bantu=bantu->next;
- // }
- // }
- //
- //}
- //selection short
- void shortAsc()
- {
- simpul *tmp;
- baru=awal;
- while(baru!=akhir)
- {
- bantu=baru;
- bantu2=baru->next;
- while(bantu2!=NULL)
- {
- if(bantu2->Data.namaBarang < bantu->Data.namaBarang)
- {
- bantu=bantu2;
- }
- bantu2=bantu2->next;
- }
- swap(bantu->Data.namaBarang,baru->Data.namaBarang);
- swap(bantu->Data.harga,baru->Data.harga);
- swap(bantu->Data.merk,baru->Data.merk);
- swap(bantu->Data.deskripsiBarang,baru->Data.deskripsiBarang);
- swap(bantu->Data.stock,baru->Data.stock);
- baru=baru->next;
- }
- }
- void shortDsc()
- {
- simpul *tmp;
- baru=awal;
- while(baru!=akhir)
- {
- bantu=baru;
- bantu2=baru->next;
- while(bantu2!=NULL)
- {
- if(bantu2->Data.namaBarang > bantu->Data.namaBarang)
- {
- bantu=bantu2;
- }
- bantu2=bantu2->next;
- }
- swap(bantu->Data.namaBarang,baru->Data.namaBarang);
- swap(bantu->Data.harga,baru->Data.harga);
- swap(bantu->Data.merk,baru->Data.merk);
- swap(bantu->Data.deskripsiBarang,baru->Data.deskripsiBarang);
- swap(bantu->Data.stock,baru->Data.stock);
- baru=baru->next;
- }
- }
- bool cekAsc()
- {
- if(index == -1 || index == 0){
- return true;
- }
- bantu = awal;
- for(int i=0;i<index;i++){
- if(bantu->Data.namaBarang > bantu->next->Data.namaBarang ){
- return false;
- }
- bantu=bantu->next;
- }
- return true;
- }
- bool cekDsc()
- {
- if(index == -1 || index == 0){
- return true;
- }
- bantu = awal;
- for(int i=0;i<index;i++){
- if(bantu->Data.namaBarang< bantu->next->Data.namaBarang ){
- return false;
- }
- bantu=bantu->next;
- }
- return true;
- }
- simpul *cariTengah(simpul *awalNode,simpul *akhirNode){
- if(awalNode == NULL){
- return NULL;
- }
- simpul *sekarang = awalNode;
- simpul *depan = awalNode->next;
- while(depan!=akhirNode){
- depan = depan->next;
- if(depan!=akhirNode){
- sekarang = sekarang->next;
- depan = depan->next;
- }
- }
- return sekarang;
- }
- void cariData()
- {
- if(cekAsc() || cekDsc()){
- bantu = awal;
- bantu2 = NULL;
- string cariNama;
- cout << "Masukkan npm yang mau di cari : ";
- cin >> cariNama;
- do{
- simpul *tengah = cariTengah(bantu,bantu2);
- if(tengah == NULL){
- cout << "Data kosong" << endl;
- system("pause");
- break;
- }
- if(tengah->Data.namaBarang == cariNama){
- cout << "Data ditemukan pada index ke-" << tengah->index << endl;
- cout << "Nama barang \t: " << tengah->Data.namaBarang << endl << "Deskripsi barang \t: " << tengah->Data.deskripsiBarang << endl;
- cout << "Merk \t: " << tengah->Data.merk << endl << "Harga \t: " << tengah->Data.harga << endl << "Stock \t: " << tengah->Data.stock << endl;
- system("pause");
- break;
- }
- if(cekAsc() == true && cekDsc() == false){
- if(tengah->Data.namaBarang < cariNama){
- bantu = tengah->next;
- }else{
- bantu2 = tengah;
- }
- }else{
- if(tengah->Data.namaBarang > cariNama){
- bantu = tengah->next;
- }else{
- bantu2 = tengah;
- }
- }
- }while(bantu2==NULL || bantu2->next != bantu);
- }else{
- cout << "Data belum urut" << endl;
- }
- }
- void show()
- {
- if (awal!=NULL)
- {
- cout << "No \tNama \tDeskripsi \tMerk \tHarga \tStock" << endl;
- bantu=awal;
- for (int i=0;i<=index;i++)
- {
- cout << i+1 << ". \t" << bantu->Data.namaBarang << "\t" << bantu->Data.deskripsiBarang << "\t" << bantu->Data.merk << "\t" << bantu->Data.harga << "\t" << bantu->Data.stock << endl;;
- bantu=bantu->next;
- }
- }
- }
- int main()
- {
- int pil;
- do
- {
- system("cls");
- cout << "1. input\n";
- cout << "2. short ascending\n";
- cout << "3. short descending\n";
- cout << "4. cari data\n";
- cout << "5. show\n";
- cout << "\nMasukkan pilihan = ";
- cin >> pil;
- switch(pil)
- {
- case 1 :
- {
- inputData();
- system("pause");
- break;
- }
- case 2:
- {
- shortAsc();
- system("pause");
- break;
- }
- case 3:
- {
- shortDsc();
- system("pause");
- break;
- }
- case 4:
- {
- cariData();
- break;
- }
- case 5:
- {
- show();
- system("pause");
- break;
- }
- }
- }while(pil<=5);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement