Program List Berkait Tunggal dengan C
// List Berkait tunggal
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
struct dt_teman{
char nama[20];
char alamat[30];
char telepon[12];
struct dt_teman *berikut;
};
struct dt_teman *kepala;
void menu();
void isi_data();
void ubah_data();
void hapus_data();
void tampil_data();
main()
{
/* menginisialisasi list berkait*/
kepala=NULL;
char pilih=’0′;
while (pilih != ‘5’)
{
menu();
pilih=getche();
switch(pilih)
{
case ‘1’:
isi_data();
break;
case ‘2’:
ubah_data();
break;
case ‘3’:
hapus_data();
break;
case ‘4’:
tampil_data();
break;
case ‘5’:
break;
}
}
return(0);
}
/* menampilkan menu */
void menu()
{
printf(“—————————-n”);
printf(” MENU n”);
printf(“—————————-n”);
printf(“1. mengisi data barun”);
printf(“2. mengubah datan”);
printf(“3. menghapus datan”);
printf(“4. menampilkan data ke layarn”);
printf(“5. selesain”);
printf(“—————————-n”);
printf(“pilihan anda: “);
}
/* mengisi data baru*/
void isi_data()
{
struct dt_teman *p;
char nama[20];
printf(“nn”);
printf(“nama ($- berhenti) : “); gets(nama);
while (nama[0] !=’$’){
p=new struct dt_teman;
strcpy(p->nama,nama);
printf(“alamat : “);gets(p->alamat);
printf(“nomor telepon : “);gets(p->telepon);
p->berikut=kepala;
kepala=p;
printf(“n nama ($-berhenti): “);gets(nama);
}
}
/*mengubah data*/
void ubah_data()
{
char jawab, unama[20];
struct dt_teman *p;
printf(“n”);
printf(“nama yang akan di ubah : “);scanf(“%s”,&unama);
/*cari data*/
p=kepala;
while (p&&strcmp(unama,p->nama))
p=p->berikut;
if(!p){
printf(“data tersebut tidak ada…n”);
getch();
}
else{
printf(“nn data lama n”);
printf(“——————————————–n”);
printf(“nama : %sn”,p->nama);
printf(“alamat : %sn”,p->alamat);
printf(“nomor telepon : %sn”,p->telepon);
printf(“nn data baru n”);
printf(“——————————————–n”);
printf(“nama : %sn”,p->nama);
printf(“alamat : “);scanf(“%s”,&p->alamat);
printf(“nomor telepon : “);scanf(“%s”,&p->telepon);
}
}
/*menghapus data*/
void hapus_data()
{
char jawab,hnama[20];
struct dt_teman *p1,*p2;
printf(“n”);
printf(“nama yang akan dihapus : “);scanf(“%s”,&hnama);
/*cari data*/
p2=NULL;
p1=kepala;
while(p1&&strcmp(hnama,p1->nama))
{
p2=p1;
p1=p1->berikut;
}
if (!p1)
printf(“data tersebut tidak ada…n”);
else{
printf(“nn data yang akan dihapusn”);
printf(“——————————n”);
printf(“nama : %s n”,p1->nama);
printf(“alamat : %s n”,p1->alamat);
printf(“nomor telepon : %s n”,p1->telepon);
printf(“nn dihapus (Y/T)?”);jawab=getche();
if (jawab==’Y’||jawab==’y’)
{
if(!p2)
kepala=p1->berikut;
else
p2->berikut=p1->berikut;
delete p1;
}
}
}
/* membaca data structure dari file */
void tampil_data()
{
int i=1;
struct dt_teman *p;
/*baca data mulai dari kepala*/
p=kepala;
/*mencetak judul*/
printf(“nn”);
printf(” Data Teman Sekolah n”);
printf(“——————————————————————-n”);
printf(“No. Nama Alamat Telepon n”);
printf(“——————————————————————-n”);
while(p)
{
printf(“%2d. %-20s %-30s %-30sn”,i++,p->nama,p->alamat,p->telepon);
p=p->berikut;
}
printf(“——————————————————————–n”);
getch();
}
nice post
keren om