1. include <iostream.h>

struct Karyawan{ char namaKaryawan[30]; char nipKaryawan[30]; Karyawan* nextKaryawan; };

struct Divisi{ char namaDivisi[30]; Karyawan* FirstKaryawan; Divisi* next; };

typedef Divisi* pointerDiv; typedef Karyawan* pointerKaryawan; typedef pointerDiv ListDiv;

void createList(ListDiv &First){ First=NULL; }

void createElmtDiv(pointerDiv &pBaru){ // char nama[30]; pBaru=new Divisi; cout<<"\nData Divisi"<<endl; cout<<"Nama : "; cin>>pBaru->namaDivisi; // cin.ignore();cin.getline(nama,30); // strcpy(pBaru->namaDivisi,nama); pBaru->next=NULL; pBaru->FirstKaryawan=NULL; }

void createElmtKaryawan(pointerKaryawan &pBaru){ pBaru=new Karyawan; cout<<"\nData Karyawan"<<endl; cout<<"Nama : "; cin>>pBaru->namaKaryawan; // cin.ignore();cin.getline(pBaru->namaKaryawan,30); cout<<"NIP: "; cin>>pBaru->nipKaryawan; pBaru->nextKaryawan=NULL; }

void insertFirstDivisi(ListDiv& First, pointerDiv pBaru){ if(First==NULL) First = pBaru; else{ pBaru->next = First; First=pBaru; } }

void linierSearch(ListDiv&First, int ketemu, pointerDiv pDiv){ pDiv=First; char key[30]; ketemu=0; cout<<"Masukan nama divisi = "; cin>>key; while(pDiv!=NULL && ketemu==0){ if(strcmp(pDiv->namaDivisi,key)==0) ketemu=1; else pDiv=pDiv->next; } }

void insertFirst_Karyawan(ListDiv& First, pointerKaryawan pBaru){ pointerDiv pDiv; int ketemu;

cout<<"Insert First Karyawan"<<endl; linierSearch(First,ketemu,pDiv); if (ketemu){ cout<<"Ditemukan"<<endl; createElmtKaryawan(pBaru); if(pDiv->FirstKaryawan==NULL){ pDiv->FirstKaryawan=pBaru; cout<<"Opsi 1"; } else{ pBaru->nextKaryawan=pDiv->FirstKaryawan; pDiv->FirstKaryawan=pBaru; cout<<"Opsi 2"; } } else{ cout<<"Tidak ditemukan."<<endl; } }

void deleteFirst_Karyawan(ListDiv& First, char key[30], pointerKaryawan& pHapus){ pointerDiv pDiv; int ketemu;

cout<<"Delete First Karyawan"<<endl; pDiv=First; ketemu=0;

while(pDiv!=NULL && ketemu==0){ if(strcmp(pDiv->namaDivisi,key)==0) ketemu=1; else pDiv=pDiv->next; }

if(ketemu){ if(pDiv->FirstKaryawan==NULL){ pHapus=NULL; cout<<"List kosong, tidak ada hapus."<<endl; } else if(pDiv->FirstKaryawan->nextKaryawan==NULL){ pHapus=pDiv->FirstKaryawan; pDiv->FirstKaryawan=NULL; } else{ pHapus=pDiv->FirstKaryawan; pDiv->FirstKaryawan=pDiv->FirstKaryawan->nextKaryawan; pHapus->nextKaryawan=NULL; } } else cout<<"Data tidak ditemukan."<<endl; }

void traversalDivKaryawan(ListDiv First){ pointerDiv pBantuDiv; pointerKaryawan pBantuKaryawan;

cout<<"ayam"; cout<<pBantuKaryawan->nipKaryawan; cout<<pBantuKaryawan->namaKaryawan; cout<<"Traversal Divisi"<<endl; pBantuDiv=First; while(pBantuDiv!=NULL){ cout<<pBantuDiv->namaDivisi<<endl; pBantuKaryawan=pBantuDiv->FirstKaryawan; while(pBantuKaryawan!=NULL){ cout<<"ayam";

pBantuKaryawan=pBantuKaryawan->nextKaryawan; } pBantuDiv=pBantuDiv->next; }

}

int main(){ pointerDiv pDiv; pointerKaryawan pKar; ListDiv First; createList(First);

createElmtDiv(pDiv); insertFirstDivisi(First, pDiv); insertFirst_Karyawan(First, pKar); traversalDivKaryawan(First); }