0% found this document useful (0 votes)
44 views13 pages

Tugas Struktur Data Imam Syawalulail

The document describes a C++ program that implements a linked list data structure to store and manage student data including name, student ID number, and grade. The program allows the user to add, delete, and view student data in the linked list. It also provides functions to calculate the average grade, highest grade, and lowest grade from the student data in the linked list.

Uploaded by

Imam Syawalulail
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
44 views13 pages

Tugas Struktur Data Imam Syawalulail

The document describes a C++ program that implements a linked list data structure to store and manage student data including name, student ID number, and grade. The program allows the user to add, delete, and view student data in the linked list. It also provides functions to calculate the average grade, highest grade, and lowest grade from the student data in the linked list.

Uploaded by

Imam Syawalulail
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 13

Tugas Struktur Data Imam Syawalulail

Tanggal dikumpulkan : 21 Desember 2011 Matematika FMIPA Unpad

#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 : Imam syawalulail"; cout<<" NPM : 140110100039\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"; 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"); } return 0; } Output :

You might also like