You are on page 1of 12

Doubly Link List #include <iostream> using namespace std; struct data { char nama[20]; int npm; float

nilai; data* next; data* prev; }; typedef data* pointer; typedef pointer List; void createList(List& First) { First=NULL; } void createElement(pointer& pBaru) { pBaru=new data; cout<<"Data Mahasiswa"<<endl; cout<<"NPM ="; cin>>pBaru->npm; cout<<"Nama ="; cin>>pBaru->nama; cout<<"Nilai ="; cin>>pBaru->nilai; pBaru->next=NULL; pBaru->prev=NULL; } void output(List First) { pointer pBantu; int nmr=1; pBantu=First; cout<<"Nomor\tNPM\tNama\tNilai"<<endl; do{ cout<<nmr<<"\t"; cout<<pBantu->npm<<"\t"; cout<<pBantu->nama<<"\t"; cout<<pBantu->nilai<<endl; nmr++; pBantu=pBantu->next; }while(pBantu!=First); } void nilaiRata2(List First,float &jumlah,float &rata) { pointer pBantu; float nmr=0; jumlah=0; rata=0; pBantu=First; do{ jumlah=jumlah+pBantu->nilai; nmr++; pBantu=pBantu->next; }while(pBantu!=First); rata=jumlah/nmr; cout<<"Rata-rata ="<<rata; } void nilaiMax(List First, float &max) { pointer pBantu; max=0; int nmr=1; pBantu=First; do{ if(pBantu->nilai>max) { max=pBantu->nilai; } pBantu=pBantu->next; }while(pBantu!=First); do{ if(pBantu->nilai==max) { cout<<endl<<"Nilai Maksimum\n"<<endl<<"Nomor\tNPM\tNama\tNilai"<<endl; cout<<nmr<<"\t"; cout<<pBantu->npm<<"\t"; cout<<pBantu->nama<<"\t"; cout<<pBantu->nilai<<endl;

} nmr++; pBantu=pBantu->next; }while(pBantu!=First); } void nilaiMin(List First, float &min) { pointer pBantu; min=101; int nmr=1; pBantu=First; do{ if(pBantu->nilai<min) { min=pBantu->nilai; } pBantu=pBantu->next; }while(pBantu!=First); do{ if(pBantu->nilai==min) { cout<<"\nNilai Minimum\n"<<endl<<"Nomor\tNPM\tNama\tNilai\n"; cout<<nmr<<"\t"; cout<<pBantu->npm<<"\t"; cout<<pBantu->nama<<"\t"; cout<<pBantu->nilai<<endl; } nmr++; pBantu=pBantu->next; }while(pBantu!=First); } void insertFirst(List &First, pointer &pBaru) { pointer last; if(First==NULL) { First=pBaru; pBaru->next=First; pBaru->prev=First; } else if(First->next==First) { First->next=pBaru; First->prev=pBaru; pBaru->prev=First; pBaru->next=First; First=pBaru; } else { last=First; do { last=last->next; }while(last->next!=First); First->prev=pBaru; last->next=pBaru; pBaru->next=First; pBaru->prev=last; First=pBaru; } } void insertLast(List &First, pointer &pBaru) { pointer last; if(First==NULL) { First=pBaru; pBaru->next=pBaru; pBaru->prev=pBaru; } else if(First->next==First) { First->next=pBaru; First->prev=pBaru; pBaru->prev=First; pBaru->next=First; } else { last=First; do { last=last->next; }while(last->next!=First); last->next=pBaru; pBaru->prev=last; pBaru->next=First; First->prev=pBaru;

} } void deleteFirst(pointer &First, pointer &pHapus) { if(First==NULL) { cout<<"List Tak ADA!!!"<<endl; } else if(First->next==First) { pHapus=First; First=NULL; } else { pointer last; last=First; do { last=last->next; }while(last->next!=First); pHapus=First; First=First->next; First->prev=last; last->next=First; pHapus->next=NULL; pHapus->prev=NULL; } } void deleteLast(pointer &First, pointer &pHapus) { if(First==NULL) { cout<<"List Tak ADA!!!"<<endl; } else if(First->next==First) { pHapus=First; First=NULL; } else { pointer last; pHapus=First; do { pHapus=pHapus->next; }while(pHapus->next!=First); last=pHapus->prev; First->prev=last; last->next=First; pHapus->next=NULL; pHapus->prev=NULL; } } void insertBefore(List &First, pointer &pBaru) { char cari[20]; pointer pCari,last; int ketemu=0; pCari=First; last=First; cout<<"Masukkan nama yang ingin disisipkan sebelumnya = "; cin>>cari; do{ last=last->next; }while(last->next!=First); do{ if(strcmp(pCari->nama,cari)==0) { ketemu=1; if(pCari->prev==last) { last->next=pBaru; First->prev=pBaru; pBaru->prev=last; pBaru->next=First; First=pBaru; } else { pBaru->prev=pCari->prev; pBaru->next=pCari; pCari->prev->next=pBaru; pCari->prev=pBaru; } } pCari=pCari->next; }while(ketemu==0 && pCari!=First);

if(ketemu==0) { cout<<"Tidak ada di data!!!"; } } void insertAfter(List &First, pointer &pBaru) { char cari[20]; pointer pCari; int ketemu=0; pCari=First; cout<<"Masukkan nama yang ingin disisipkan setelahnya = "; cin>>cari; do{ if(strcmp(pCari->nama,cari)==0) { ketemu=1; if(pCari->next==First) { First->prev=pBaru; pBaru->prev=pCari; pCari->next=pBaru; pBaru->next=First; } else { pBaru->prev=pCari; pBaru->next=pCari->next; pCari->next->prev=pBaru; pCari->next=pBaru; } } pCari=pCari->next; }while(ketemu==0 && pCari!=First); if(ketemu==0) { cout<<"Tidak ada di data!!!"; } } void deleteBefore(List &First,pointer &pHapus) { char cari[20]; pointer pCari,last; int ketemu=0; pCari=First; last=First; cout<<"Masukkan nama yang ingin dihapus sebelumnya = "; cin>>cari; do{ last=last->next; }while(last->next!=First); do{ if(strcmp(pCari->nama,cari)==0) { ketemu=1; if(pCari==First) { cout<<"Tidak ada yang dapat dihapus"; } else if(pCari==First->next) { pCari->prev=last; last->next=pCari; First->next=NULL; First->prev=NULL; First=pCari; } else { pHapus=pCari->prev; pCari->prev=pHapus->prev; pHapus->prev->next=pCari; pHapus->next=NULL; pHapus->prev=NULL; } } pCari=pCari->next; }while(ketemu==0 && pCari!=First); if(ketemu==0) { cout<<"Tidak ada di data!!!"; } } void deleteAfter(List &First, pointer &pHapus) { char cari[20]; pointer pCari; int ketemu=0; pCari=First;

cout<<"Masukkan nama yang ingin disisipkan setelahnya = "; cin>>cari; do{ if(strcmp(pCari->nama,cari)==0) { ketemu=1; pHapus=pCari->next; if(pCari->next==First) { cout<<"Tidak ada yang dapat dihapus"; } else { pCari->next=pHapus->next; pHapus->next->prev=pCari; pHapus->next=NULL; pHapus->prev=NULL; } } pCari=pCari->next; }while(ketemu==0 && pCari!=First); if(ketemu==0) { cout<<"Tidak ada di data!!!"; } } void deletePcari(List &First) { char cari[20]; pointer pCari,last; int ketemu=0; pCari=First; last=First; cout<<"Masukkan nama yang ingin dihapus sebelumnya = "; cin>>cari; do{ last=last->next; }while(last->next!=First); do{ if(strcmp(pCari->nama,cari)==0) { ketemu=1; if(First->next==First) { pCari=First; First=NULL; } else if(pCari==First) { pCari->next->prev=last; last->next=pCari->next; First=pCari->next; pCari->next=NULL; pCari->prev=NULL; } else { pCari->prev->next=pCari->next; pCari->next->prev=pCari->prev; pCari->next=NULL; pCari->prev=NULL; } } pCari=pCari->next; }while(ketemu==0 && pCari!=First); if(ketemu==0) { cout<<"Tidak ada di data!!!"; } } int main() { pointer pertamax,ilang; List mahasiwa; int pilih; float jumlah,max,min,rata; char lanjutkan; lanjutkan='y'; createList(mahasiwa); while(lanjutkan=='y') { cout<<"Nama : Pitra Dwirahma Putra\n"; cout<<"NPM : 140110100030\n"; cout<<"Program : Membuat data nilai mahasiswa\n\n"; cout<<"Menu:\n"; cout<<"1.Insert First (Penambahan data di awal)\n"; cout<<"2.Insert Before (Penambahan data sebelum suatu data)\n";

} return 0; } Multilist

cout<<"3.Insert After (Penambahan data setelah suatu data)\n"; cout<<"4.Insert Last (Penambahan data di akhir)\n"; cout<<"5.Delete First (Penghapusan data di awal)\n"; cout<<"6.Delete Before (Penghapusan data sebelum suatu data)\n"; cout<<"7.Delete After (Penghapusan data setelah suatu data)\n"; cout<<"8.Delete pCari (Penghapusan data yang dipilih)\n"; cout<<"9.Delete Last (Penghapusan data di akhir)\n"; cout<<"10.Tampilkan Data\n"; cout<<"11.Nilai Rata-rata\n"; cout<<"12.Nilai Maksimum\n"; cout<<"13.Nilai Minimum\n"; cout<<"14.Exit (Tidak perlu di jelaskan lagi)\n"; cout<<"Pilih nomor (1-10) :"; cin>>pilih; switch(pilih) { case 1: createElement(mahasiwa); insertFirst(pertamax,mahasiwa); break; case 2: createElement(mahasiwa); insertBefore(pertamax,mahasiwa); break; case 3: createElement(mahasiwa); insertAfter(pertamax,mahasiwa); break; case 4: createElement(mahasiwa); insertLast(pertamax,mahasiwa); break; case 5: deleteFirst(pertamax,ilang); break; case 6: deleteBefore(pertamax,ilang); break; case 7: deleteAfter(pertamax,ilang); break; case 8: deletePcari(pertamax); break; case 9: deleteLast(pertamax,ilang); break; case 10: output(pertamax); break; case 11: nilaiRata2(pertamax,jumlah,rata); break; case 12: nilaiMax(pertamax,max); break; case 13: nilaiMin(pertamax,min); break; case 14: return 0; break; default: cout<<"Tak ada dalam daftar"<<endl; } cout<<endl<<"Lanjutkan (y/n)?"; cin>>lanjutkan; system("cls");

#include <iostream> #include <string.h> #include <iomanip> using namespace std; struct Pegawai{ int NIP; string namaPeg; Pegawai* nextPeg; }; typedef Pegawai* pointerKar; struct Divisi{ string namaDiv; Pegawai* FirstPeg; Divisi* nextDiv; };

typedef Divisi* pointerDiv; typedef pointerDiv ListDiv; void createElementDivisi(pointerDiv &pBaru) { pBaru=new Divisi; cout<<"Input Divisi : \n"; cout<<"Nama Divisi = "; cin>>pBaru->namaDiv; pBaru->FirstPeg=NULL; pBaru->nextDiv=NULL; } void createElementPegawai(pointerKar &pBaru) { pBaru=new Pegawai; cout<<"Input Pegawai :\n"; cout<<"NIP = "; cin>>pBaru->NIP; cout<<"Nama = "; cin>>pBaru->namaPeg; pBaru->nextPeg=NULL; } void insertFirstDivisi(ListDiv &First, pointerDiv pBaru) { if(First==NULL) { First=pBaru; } else { pBaru->nextDiv=First; First=pBaru; } } void insertFirstPegawai(ListDiv &First, string key, pointerKar pBaru) { pointerDiv pBantuDiv; int ketemu; pBantuDiv=First; while(pBantuDiv!=NULL && ketemu==0) { if(pBantuDiv->namaDiv==key) { ketemu=1; } else { } pBantuDiv=pBantuDiv->nextDiv; } if(ketemu==1) { if(pBantuDiv->FirstPeg==NULL) { pBantuDiv->FirstPeg=pBaru; } else { pBaru->nextPeg=pBantuDiv->FirstPeg; pBantuDiv->FirstPeg=pBaru; } } else cout<<"Divisi yg dicari tidak ada"; } void deleteFirstPegawai(ListDiv &First, string key, pointerKar &pHapus) { pointerDiv pBantuDiv; int ketemu; pBantuDiv=First; ketemu=0; while(pBantuDiv!=NULL && ketemu==0) { if(pBantuDiv->namaDiv==key) { ketemu=1; } else { pBantuDiv=pBantuDiv->nextDiv; } } if(ketemu==1) { if(pBantuDiv->FirstPeg==NULL) { pHapus=NULL; cout<<"List Kosong "<<endl;

} else if(pBantuDiv->FirstPeg->nextPeg==NULL) { pHapus=pBantuDiv->FirstPeg; pBantuDiv->FirstPeg=NULL; } else { pHapus=pBantuDiv->FirstPeg; pBantuDiv->FirstPeg=pBantuDiv->FirstPeg->nextPeg; pHapus->nextPeg=NULL; } } else { cout<<"Divisi yag dicari tidak ada"<<endl; } }

void traversalDivisiPegawai(ListDiv First) { pointerDiv pBantuDiv; pointerKar pBantuPeg; int i=1; cout<<"No \t Nama Divisi \t\t NIP Pegawai \t Nama Pegawai \n"<<endl<<endl; pBantuDiv=First; while(pBantuDiv!=NULL) { cout<<i<<" \t "<<pBantuDiv->namaDiv; pBantuPeg=pBantuDiv->FirstPeg; while(pBantuPeg!=NULL) { cout<<setw(27)<<pBantuPeg->NIP<<setw(22)<<pBantuPeg->namaPeg<<endl; pBantuPeg=pBantuPeg->nextPeg; cout<<"\t\t"; } pBantuDiv=pBantuDiv->nextDiv; i++; cout<<endl; }

int main() { ListDiv First; int pilih; char lanjut='y'; string key; pointerDiv D; pointerKar K,pHapus; First=NULL; while(lanjut=='y') { system("cls"); cout<<"_____________Menu_____________\n"; cout<<"1. Insert First Divisi\n"; cout<<"2. Insert First Pegawai\n"; cout<<"3. Delete First Pegawai\n"; cout<<"4. Tampilan Data\n"; cout<<endl<<"Pilih (1-4) : "; cin>>pilih; cout<<endl<<endl; switch(pilih) { case 1:

case 2:

createElementDivisi(D); insertFirstDivisi(First,D); break;

cout<<"Pada Divisi : "; cin>>key; createElementPegawai(K); insertFirstPegawai(First,key,K); break; case 3: cout<<"Hapus Pegawai pada Divisi : "; cin>>key; deleteFirstPegawai(First,key,pHapus); break; case 4: traversalDivisiPegawai(First); break; default: cout<<"Tidak ada dalam menu";break; } cout<<"\nLanjutkan (y/n) = "; cin>>lanjut; } cout<<endl<<endl<<"Terima Kasih Telah Menggunakan Program Ini."; return 0; }

QUEUE Prioritas #include <iostream> using namespace std; struct elementQueue{ char info[10]; int prior; elementQueue* next; elementQueue* prev; }; typedef elementQueue* pointer; struct queue{ pointer head; pointer tail; }; queue q; void createQueue(queue& q){ q.head=NULL; q.tail=NULL; } void createElement(pointer& pBaru){ pBaru=new elementQueue; cout<<"Masukkan data = ";cin>>pBaru->info; cout<<"Masukkan angka prioritas = ";cin>>pBaru->prior; pBaru->next=NULL; pBaru->prev=NULL; } void insertQueue(queue& q, pointer pBaru){ pointer pBantu=q.head; if(q.head==NULL && q.tail==NULL){ q.head=pBaru; q.tail=pBaru; } else if(pBaru->prior>pBantu->prior){ pBaru->next=pBantu; pBantu->prev=pBaru; q.head=pBaru; } else if(pBaru->prior<=q.tail->prior){ q.tail->next=pBaru; pBaru->prev=q.tail; q.tail=pBaru; } else{ while(pBaru->prior<=pBantu->prior){ pBantu=pBantu->next; } pBaru->next=pBantu; pBaru->prev=pBantu->prev; pBantu->prev->next=pBaru; pBantu->prev=pBaru; } } void deleteQueue(queue& q, pointer pHapus){ if(q.head==NULL && q.tail==NULL){ pHapus=NULL; cout<<"Queue kosong"<<endl; } else if(q.head->next==NULL){ pHapus=q.head; q.head=NULL; q.tail=NULL; } else{ pHapus=q.head; q.head=q.head->next; pHapus->next->prev=NULL; pHapus->next=NULL;} } void traversal(queue q){ pointer pBantu=q.head; if(pBantu==NULL) cout<<"Queue kosong"<<endl; else{ cout<<"Info\tPrioritas"<<endl; while(pBantu!=NULL){ cout<<pBantu->info<<"\t"<<pBantu->prior<<endl; pBantu=pBantu->next; } } }

int main(){ pointer p,r; int n; char menu, ulang='y'; while(ulang=='y'){ system("cls"); cout<<"Menu :"<<endl; cout<<"1. Insert Queue"<<endl; cout<<"2. Delete Queue"<<endl; cout<<"3. Cetak data"<<endl; cout<<"pilih : ";cin>>menu; cout<<endl; switch(menu){ case '1': cout<<"Banyaknya Data :"; cin>>n; for(int i=0;i<n;i++) { createElement(p); insertQueue(q,p); } break; case '2': cout<<"Banyaknya Data :"; cin>>n; for(int i=0;i<n;i++) { deleteQueue(q,r); } break; case '3': traversal(q); break; default: cout<<"Tidak ada dimenu"<<endl; } cout<<endl<<"Mau ke menu awal (y/n)? : ";cin>>ulang; while(ulang!='y' && ulang!='n'){ cout<<"Ada kesalahan"<<endl; cout<<"Mau ke menu awal (y/n)? : ";cin>>ulang; } } return 0; } STACK #include <iostream> #include <stdlib.h> using namespace std; const int maxElemen=255; struct tumpukan{ char isi[maxElemen]; int top; }; void createStack(tumpukan &s){ s.top=-1; } void push(tumpukan &s, char elemenBaru){ if(s.top==maxElemen-1){ cout<<"Tumpukan sudah penuh,tidak bisa diisi lagi"<<endl; } else{ s.top=s.top+1; s.isi[s.top]=elemenBaru; } } void pop(tumpukan &s, char elemenHasil){ if(s.top<0){ cout<<"Tumpukan sudah kosong, tidak bisa ditampilkan lagi"<<endl<<endl; } else{ elemenHasil=s.isi[s.top]; s.top=s.top-1; cout<<elemenHasil; } } int main(){ tumpukan A; createStack(A); char a; char lanjutkan='y';

10

while(lanjutkan=='y'){ system("cls"); cout<<"Input kata"<<endl; while(cin.get(a) && a!='\n') { push(A,a); } while(A.top>-1) { pop(A,a); } cout<<endl; cout<<"Mau mencoba lagi (y/n)? = ";cin>>lanjutkan; while(lanjutkan!='y' && lanjutkan!='n'){ cout<<"Ada kesalahan, mau ulangi lagi (y/n)? = ";cin>>lanjutkan; } } return 0; } TREE #include <iostream> using namespace std; struct simpul{ int info; simpul* left; simpul* right; }; typedef simpul* tree; typedef simpul* pointer; void void void void void void createTree(tree& root); createSon(pointer& son); insertTree(tree& root, pointer pBaru); preOrder(tree root); inOrder(tree root); postOrder(tree root);

int main(){ int pilih, plh; pointer p; tree root; char lanjutkan='y'; char cetak='y'; createTree(root); menu: while(lanjutkan=='y'){ system("cls"); cout<<"------------------------"<<endl; cout<<"| Bikin Tree |"<<endl; cout<<"|----------------------|"<<endl; cout<<"| 1. Insert |"<<endl; cout<<"| 2. Cetak Data |"<<endl; cout<<"------------------------"<<endl; cout<<endl<<"Pilih : ";cin>>pilih; switch(pilih){ case 1:{ system("cls"); cout<<endl<<endl<<"Mengisi Tree"<<endl; cout<<"----------------------"<<endl; while(cetak=='y'){ createSon(p); insertTree(root,p); cout<<"Cetak lagi (y/n)? = ";cin>>cetak; cout<<"----------------------"<<endl; } cetak='y'; goto menu; break; } case 2:{ system("cls"); cout<<endl; cout<<" ----------------------"<<endl; cout<<"| Cetak |"<<endl; cout<<"|----------------------|"<<endl; cout<<"| 1. Pre-Order |"<<endl; cout<<"| 2. In-Order |"<<endl; cout<<"| 3. Post-Order |"<<endl; cout<<" ----------------------"<<endl; cout<<endl<<"Pilih : ";cin>>plh; switch(plh){ case 1: system("cls"); cout<<endl<<endl<<"Cetak Pre-Order"<<endl;

11

cout<<"----------------------"<<endl<<endl; preOrder(root); cout<<endl; break; case 2: system("cls"); cout<<endl<<endl<<"Cetak In-Order"<<endl; cout<<"----------------------"<<endl<<endl; inOrder(root); cout<<endl; break; system("cls"); cout<<endl<<endl<<"Cetak Post-Order"<<endl; cout<<"----------------------"<<endl; postOrder(root); cout<<endl; break; } break; } } system("pause"); } void createTree(tree& root){ root=0; } void createSon(pointer& son){ son=new simpul; cout<<"isi : ";cin>>son->info; son->left=0; son->right=0; } void insertTree(tree& root, pointer pBaru){ if(root==0) root=pBaru; else if(pBaru->info>root->info){ insertTree(root->right,pBaru); } else if(pBaru->info<root->info){ insertTree(root->left,pBaru); } else cout<<"Sudah ada"<<endl; } void preOrder(tree root){ if(root!=0){ cout<<" "<<root->info<<" preOrder(root->left); preOrder(root->right); } } void inOrder(tree root){ if(root!=0){ inOrder(root->left); cout<<" "<<root->info<<" inOrder(root->right); } } void postOrder(tree root){ if(root!=0){ postOrder(root->left); postOrder(root->right); cout<<" "<<root->info<<" } } } cout<<endl<<"Lanjutkan program (y/n) = ";cin>>lanjutkan;

case 3:

";

";

";

12

You might also like