Jumat, 25 Juni 2010

source code data karyawan dengan linked list

#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h"

struct node//struct
{
int nip;
char nama[20];//array
int gaji;
int umur;
struct node *next;//linked list
struct node *prev;
};
typedef struct node *simpul;
struct node simpulx[100];
struct node smpn;
simpul data, head=NULL, tail=NULL, temp;
int pilih;
int plh;
int tmpl;
int doble=0;
int n;
int jmlh=0;
int hpus;

void urut()
{
int i=0;
temp=head;
while(temp!=NULL)
{
simpulx[i].nip=temp->nip;
strcpy(simpulx[i].nama,temp->nama);
simpulx[i].gaji=temp->gaji;
simpulx[i].umur=temp->umur;
i++;
temp=temp->next;
}
for(int r=0;r for(int t=0;t {
if(simpulx[t].nip>simpulx[t+1].nip)//sorting untuk menampilkan secara urut
{
smpn=simpulx[t];
simpulx[t]=simpulx[t+1];
simpulx[t+1]=smpn;
}
}
printf("||NIP\t\t||Nama\t\t||Gaji\t\t||umur\t||");
for(int j=0;j<=100;j++)
{
printf("\n||%d\t||%s\t||%d\t||%d\t||",simpulx[j].nip,simpulx[j].nama,simpulx[j].gaji,simpulx[j].umur);
if(simpulx[j+1].nip<1)break;//cek apakah simpul berikutnya kosong, jika kosong looping di hentikan dg keyword 'break'
}
printf("\n\ntekan ENTER");
getch();

}

void nip()
{
printf("Masukkan nip yang di tampilkan=");
scanf("%d",&tmpl);

temp=head;
while(temp!=NULL && temp->nip!=tmpl)//searcing untuk mencari data yang akan di tampilkan
{
temp=temp->next;
}
if(temp!=NULL && temp->nip==tmpl)
{
printf("||NIP\t\t||Nama\t\t||Gaji\t\t||umur\t||");
printf("\n||%d\t||%s\t||%d\t||%d\t||",temp->nip,temp->nama,temp->gaji,temp->umur);
}else
{
printf("data tdk ditemukan");
}printf("\n\ntekan ENTER");getch();
}

void hapus()
{
simpul prev=NULL;
printf("Masukkan nip yang di hapus=");
scanf("%d",&hpus);

temp=head;
while(temp!=NULL && temp->nip!=hpus)//searching untuk mencari data yang di hapus
{
prev=temp;
temp=temp->next;
}
if(temp!=NULL && temp->nip==hpus)
{
if(temp->next != NULL && temp->prev != NULL)
{
prev->next = temp->next;
(temp->next)->prev=prev;
}
else if (temp->next == NULL)
{
prev->next = NULL;
}
else if (temp == head && head->next == NULL)
{
head = NULL;
}
else if (temp == head && head->next != NULL)
{
(head->next)->prev=NULL;
head = head->next;
}
free(temp); jmlh--;
printf("\ndata di hapus");

}else
{
printf("data tdk ditemukan");
}printf("\n\ntekan ENTER");getch();system("cls");
}
void insert()
{
data = (simpul) malloc(sizeof (struct node));
printf("NIP=");
scanf("%d",&n);
temp=head;
while(temp!=NULL)
{
if(temp->nip==n)doble=1;
temp=temp->next;
}
if(doble==0)
{
data->nip=n;
printf("\nNama=");
scanf("%s",&data->nama);
printf("\nGaji=");
scanf("%d",&data->gaji);
printf("\nUmur=");
scanf("%d",&data->umur);

data->next=NULL;
data->prev=NULL;
jmlh++;

if(head==NULL && tail==NULL)
{
head=data;
tail=data;
}else
{
data->prev=tail;
tail->next=data;
tail=data;
}
}else
{
printf("NIP sudah terdaftar");
}printf("\n\ntekan ENTER");
getch();
system("cls");
}
void view()
{
printf("1.tampil seluruh secara urut");
printf("\n2.tampil berdasarkan NIP");
printf("\nMasukkan pilihan=");
scanf("%d",&plh);
switch(plh)
{
case 1: urut();
break;
case 2: nip();
break;
default: printf("\nSALAH!!!");
}system("cls");
}

void main()
{
while(pilih!=4)
{
printf("1.insert data");
printf("\n2.hapus data");
printf("\n3.tampilkan");
printf("\n4.EXIT");
printf("\nMasukkan pilihan=");
scanf("%d",&pilih);
system("cls");

switch(pilih)
{
case 1: insert();
break;
case 2: hapus();
break;
case 3: view();
break;
case 4: printf("\nterima kasih\n\n");
break;
default: printf("\n\n SALAH!!\n");
}
}
}

Tidak ada komentar:

Posting Komentar