Anda di halaman 1dari 5

Praktikum 5 DOUBLE LINKED LIST II

Tujuan: Setelah melakukan prktikum ini siswa diharapkan mengerti: 1. membuat operasi menghapus data tertentu pada double linked list 2. membuat operasi menyisipkan data setelah data tertentu pada doubel lnked list Contoh program 1. mendeklarasikan,memasukan data,menampilkan data FIFO kemudianMenghapus data tertentu pada doubel linked list
Struct dtnilai { char nrp[10]; Char nama [20]; Double nilai; Struck dtnilai *prev; Struck dtnilai *next; }; Main() { struct dtnilai *tampung; struct dt nilai *ujung; struct dtnilai *awal; struct dtnilai *tanda; int j=0; char hapus[10]; while(1) {{ If(j==0) { Awal=( Struck dtnilai *)malloc(siz of(Struck dtnilai )); Printf(NRP: );gets(awal->nrp); Printf(Nama: );gets(awal->nama); Printf(Nilai test: );gets(strnilai); awal->nilai=atof(strnilai); awal->prev=NULL; awal->next=NULL; tampung=awal; } Else { Ujung= Struck dtnilai *)malloc(siz of(Struck dtnilai )); Printf(NRP: );gets(ujung->nrp); Printf(Nama: );gets(ujung->nama); Printf(Nilai test: );gets(strnilai); ujung->nilai=atof(strnilai); Ujung->prev=tampung; Ujung->next=NULL; Tampung->next=ujung; Tampung=ujung; } Printf(ada data lagi (y/t): ); gets(jawab); If((strcmp(jawab,Y)==0|| strcmp(jawab,y)==0)) { j++;continue; } Else if((strcmp(jawab,T)==0|| strcmp(jawab,t)==0)) Break; }//end of while

Printf(data mahasiswa yang telah diinputkan (LIFO):\n); Printf(NRP\tNAMA\tNILAI\n); Tampung=awal; While(tampung!=NULL) {{ printf(%-10s\t%-20s\t%6.2f\n,tampung->nrp,tampung->nama,tampung->nilai); Tampung=tampung->next; } While(1) {printf(NRP yang akan dihapus (NRP/(t/T)):);gets (hapus); If((strcmp(hapus,t)==0||strcmp(hapus,T)==0)) {printf(masukkan NRP\n);continue;} Else Break; } Tanda=awal; While(1) { if(strcmp(tanda->nrp,hapus)==0) {printf(NRP=%s ditemukan\n,hapus);break;} Else {tanda=tanda->next; If(tanda!=NULL)continue; Else if(tanda==NULL) break; } } //penghapusan struktur di awal/ujung/tertentu If(tanda==NULL) printf(NRP=%s tidak ada\n,hapus); Else if((tanda==awal)&&(strcmp(awal->nrp,hapus)==0)) { tanda=awal->next; Free(awal); Awal=tanda; Awal->prev=NULL; } Else if((tanda==ujung)&&(strcmp(ujung->nrp,hapus)==0)) { tanda=ujung->prev; Free(ujung); Ujung=tanda; Ujung->next=NULL; } Else {tanda->prev->next=tanda->next; tanda->next->prev=tanda->prev; free(tanda); } Printf(Data mahasiswa setelah di hapus : \n); Printf(NPR\tNama\tNilai\n); Ujung=awal; While(ujung!=NULL) { printf(%s\ts\t%6.2f\n,ujung->nrp,ujung->nama,ujung->nilai); ujung=ujung->next; } }//end of main

Hasilnya :

2. mendeklarasikan,memasukan data,menampilkan data FIFO kemudian menyisipka data tertentu pada doubel linked list
Struct dtnilai { char nrp[10]; Char nama [20]; Double nilai; Struck dtnilai *prev; Struck dtnilai *next; }; Main() { struct dtnilai *tampung; struct dt nilai *ujung; struct dtnilai *awal; struct dtnilai *insert; struct dtnilai *tanda; int j=0; char sisip[10]; while(1) { If(j==0) { Awal=( Struck dtnilai *)malloc(siz of(Struck dtnilai )); Printf(NRP: );gets(awal->nrp); Printf(Nama: );gets(awal->nama); Printf(Nilai test: );gets(strnilai); awal->nilai=atof(strnilai); awal->prev=NULL; awal->next=NULL; tampung=awal; } Else { Ujung= Struck dtnilai *)malloc(siz of(Struck dtnilai )); Printf(NRP: );gets(ujung->nrp); Printf(Nama: );gets(ujung->nama); Printf(Nilai test: );gets(strnilai); ujung->nilai=atof(strnilai); Ujung->prev=tampung; Ujung->next=NULL; Tampung->next=ujung; Tampung=ujung; } Printf(ada data lagi (y/t): ); gets(jawab); If((strcmp(jawab,Y)==0|| strcmp(jawab,y)==0)) { j++;continue; } Else if((strcmp(jawab,T)==0|| strcmp(jawab,t)==0)) Break; }//end of while

Printf(data mahasiswa yang telah diinputkan (LIFO):\n); Printf(NRP\tNAMA\tNILAI\n); Tampung=awal; While(tampung!=NULL) { printf(%s\t%s\t%6.2f\n,tampung->nrp,tampung->nama,tampung->nilai); Tampung=tampung->next; } While(1) { Printf(disisipkan setelah NRP (NRP/(t/T)): ); gets(sisip); If((strcmp(sisip,t)==0||strcmp(sisip,T)==0)) { Printf(masukkan NRP\n); continue; } Else Break; } //mengisi pointer tanda denagan almt struktur sebelum //yang aakan disisipi Tanda=awal; While(1) { If(strcmp(tanda->nrp,sisip)==0) {printf (NRP= %s ditentukan\n,sisip); break;} Else {tanda=tanda->next; If(tanda!=NULL) continue; Else if(tanda==NULL) break; } } //penyisipan struktur di awal/ujung/tertentu If(tanda!=NULL) { insert= Struck dtnilai *)malloc(siz of(Struck dtnilai )); Printf(NRP: );gets(insert->nrp); Printf(Nama: );gets(insert->nama); Printf(Nilai test: );gets(strnilai); insert->nilai=atof(strnilai); insert->prev=tanda; insert->next=tanda->next; if((tanda==ujung)||(tanda->next==NULL)) ujung=insert; else tanda->next->prev=insert; tanda->next=insert; } }//end of main

Hasilnya :

Anda mungkin juga menyukai