//Stack and Queue
//Nelfrits Christopher 682005021
#include<iostream.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
struct Node{
char nim[25];
char nama[25];
char fak[25];
Node *next;
};
class Mahasiswa{
private:
char nim[25];
char nama[25];
char fak[25];
Node *head;
Node *tail;
Node *find(char nim[25]);
Node *tmp;
public:
Mahasiswa();
~Mahasiswa();
int addDataStack(char nim[25],char nama[25],char fak[25]);
int addDataQueue(char nim[25],char nama[25],char fak[25]);
int delData(char nim[25]);
int updateData(char nim[25]);
int isNull();
void showAllData();
};
Mahasiswa::Mahasiswa(){
head = NULL;
tail = NULL;
tmp = NULL;
}
Mahasiswa::~Mahasiswa(){
Node *deletePrt;
while(head!=NULL){
deletePrt = head;
head = head->next;
delete deletePrt;
}
}
int Mahasiswa::addDataStack(char nim[25],char nama[25],char fak[25]){
Node *newNode;
newNode = new Node;
if(newNode){
if(head==NULL){
newNode->next = head;
strcpy(newNode->nim,nim);
strcpy(newNode->nama,nama);
strcpy(newNode->fak,fak);
head = newNode;
tail = newNode;
}else{
newNode->next = head;
strcpy(newNode->nim,nim);
strcpy(newNode->nama,nama);
strcpy(newNode->fak,fak);
head = newNode;
}
return 1;
}else{
return 0;
}
}
int Mahasiswa::addDataQueue(char nim[25],char nama[25],char fak[25]){
Node *newNode;
newNode = new Node;
if(newNode){
if(head==NULL){
head = newNode;
strcpy(newNode->nim,nim);
strcpy(newNode->nama,nama);
strcpy(newNode->fak,fak);
newNode->next = NULL;
tail = newNode;
}else{
tail->next = newNode;
strcpy(newNode->nim,nim);
strcpy(newNode->nama,nama);
strcpy(newNode->fak,fak);
newNode->next = NULL;
tail = newNode;
}
return 1;
}else{
return 0;
}
}
void Mahasiswa::showAllData(){
clrscr();
cout<<"\n\n\n\t --------------------- DATA MAHASISWA---------------------\n\n";
Node *ptr;
ptr = head;
while(ptr!=NULL){
cout<<"\t NIM : "<<ptr->nim<<"\n";
cout<<"\t NAMA : "<<ptr->nama<<"\n";
cout<<"\t FAKULTAS: "<<ptr->fak<<"\n";
cout<<"\t --------------------------\n";
ptr = ptr->next;
}
getch();
}
int Mahasiswa::isNull(){
if(tail==NULL)
return 1;
else
return 0;
}
int Mahasiswa::delData(char nim[25]){
Node *ptr,*ptr2;
ptr2 = head;
ptr = find(nim);
if(ptr==NULL){
return 0;
}else{
if(ptr==head){
ptr2 = ptr->next;
head = ptr2;
}else{
tmp->next = ptr->next;
}
delete ptr;
return 1;
}
}
int Mahasiswa::updateData(char nim[25]){
Node *ptr;
ptr = find(nim);
if(ptr==NULL){
return 0;
}else{
clrscr();
cout<<"\n\n\n\t --------------------- INPUT DATA MAHASISWA QUEUE---------------------\n\n";
cout<<"\t NIM: ";
gets(ptr->nim);
cout<<"\n\t NAMA: ";
gets(ptr->nama);
cout<<"\n\t FAKULTAS: ";
gets(ptr->fak);
return 1;
}
}
Node* Mahasiswa::find(char nim[25]){
Node *data;
data = head;
while(data!=NULL){
if(strcmp(data->nim,nim)==0){
break;
}
tmp = data;
data = data->next;
}
return data;
}
void initFace(){
flushall();
cout<<"\n\n\n\t ---------------------DATA MAHASISWA---------------------\n\n";
cout<<"\t 1) Tambah Data\n";
cout<<"\t 2) Hapus Data\n";
cout<<"\t 3) Edit Data\n";
cout<<"\t 4) Tampilkan Data\n";
cout<<"\t 5) Keluar\n";
cout<<"\t Pilih: ";
}
void main(){
int opt,opt2,stat;
char nama[25],fak[25],nim[25],nimDel[25],nimUpd[25];
Mahasiswa mhs;
while(1){
clrscr();
initFace();
cin>>opt;
switch(opt){
case 1:
clrscr();
while(opt==1){
clrscr();
cout<<"\n\n\n\t --------------------- INPUT DATA MAHASISWA---------------------\n\n";
cout<<"\t 1) Stack\n";
cout<<"\t 2) Queue\n";
cout<<"\t 3) Menu\n";
cout<<"\t Pilih: ";
cin>>opt2;
if(opt2==1){
clrscr();
cout<<"\n\n\n\t --------------------- INPUT DATA MAHASISWA STACK---------------------\n\n";
cout<<"\t NIM: ";
gets(nim);
cout<<"\n\t NAMA: ";
gets(nama);
cout<<"\n\t FAKULTAS: ";
gets(fak);
mhs.addDataStack(nim,nama,fak);
//opt=-1;
}else if(opt2==2){
clrscr();
cout<<"\n\n\n\t --------------------- INPUT DATA MAHASISWA QUEUE---------------------\n\n";
cout<<"\t NIM: ";
gets(nim);
cout<<"\n\t NAMA: ";
gets(nama);
cout<<"\n\t FAKULTAS: ";
gets(fak);
mhs.addDataQueue(nim,nama,fak);
}else if(opt2==3){
opt=-1;
break;
}else{
break;
}
}
break;
case 2:
clrscr();
if(mhs.isNull()==1){
cout<<"\n\n\n\t --------------------- DATA KOSONG---------------------\n\n";
getch();
}else{
mhs.showAllData();
cout<<"\t Pilih NIM pada data yang akan dihapus: ";
gets(nimDel);
if(mhs.delData(nimDel)==1){
clrscr();
cout<<"\n\n\n\t --------------------- DATA BERHASIL DIHAPUS---------------------\n\n";
}else{
clrscr();
cout<<"\n\n\n\t --------------------- DATA GAGAL DIHAPUS---------------------\n\n";
}
}
getch();
//hapus
break;
case 3:
if(mhs.isNull()==1){
cout<<"\n\n\n\t --------------------- DATA KOSONG---------------------\n\n";
getch();
}else{
clrscr();
mhs.showAllData();
cout<<"\t Pilih NIM pada data yang akan di-update: ";
gets(nimUpd);
stat = mhs.updateData(nimUpd);
if(stat==1){
clrscr();
cout<<"\n\n\n\t --------------------- DATA BERHASIL DI-UPDATE---------------------\n\n";
}else{
clrscr();
cout<<"\n\n\n\t --------------------- DATA BERHASIL DI-UPDATE---------------------\n\n";
}
}
getch();
//edit
break;
case 4:
//tampil
if(mhs.isNull()==1){
cout<<"\n\n\n\t --------------------- DATA KOSONG---------------------\n\n";
getch();
}else{
mhs.showAllData();
}
break;
case 5:
_exit(0);
break;
default:
clrscr();
initFace();
break;
}
}
}
This entry was posted on April 13, 2008 at 8:04 am and is filed under Computer with tags algoritma, data, queue, stack. You can follow any responses to this entry through the RSS 2.0 feed
You can leave a response, or trackback from your own site.