Contoh Single Lingked List
Contoh Single Lingked List
#include<conio.h>
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct karyawan{
char nama[20];
char alamat[30];
char telepon[12];
};
void menu();
void isi_data();
void hapus_data();
void tampil_data();
void sisip_depan();
void hapus_depan();
void sisip_belakang();
void hapus_belakang();
void sisip_tengah();
void hapus_tengah();
main()
{
kepala=NULL;
char pilih='0';
while(pilih!='4')
menu();
pilih=getche();
switch(pilih)
case'1':{
while(pilih!='0')
isi_data();
pilih=getche();
switch(pilih)
case'0':break;
case'1':sisip_depan();break;
case'2':sisip_tengah();break;
case'3':sisip_belakang();break;
};break;
case'2':{
while(pilih!='0')
hapus_data();
pilih=getche();
switch(pilih)
case'0':break;
case'1':hapus_depan();break;
case'2':hapus_tengah();break;
case'3':hapus_belakang();break;
};break;
case'3':tampil_data();break;
case'4':break;
return 0;
/*menampilkan menu*/
void menu()
textbackground(WHITE);
textcolor(BLACK);
clrscr();
gotoxy(35,10);cprintf("MENU PILIHAN");
gotoxy(32,11);cprintf("------------------");
gotoxy(32,15);cprintf("4. SELESAI");
gotoxy(32,16);cprintf("------------------");
void isi_data()
textbackground(WHITE);
textcolor(BLACK);
clrscr();
gotoxy(36,10);cprintf("ISI DATA");
gotoxy(28,11);cprintf("------------------------");
gotoxy(28,16);cprintf("------------------------");
}
/*menampilkan hapus data*/
void hapus_data()
textbackground(WHITE);
textcolor(BLACK);
clrscr();
gotoxy(35,10);cprintf("HAPUS DATA");
gotoxy(27,11);cprintf("---------------------------");
gotoxy(27,16);cprintf("---------------------------");
void sisip_depan()
char nama[20];
int i;
clrscr();
i=1;
gotoxy(15,11);printf("-----------------------------------------------");
while(nama[0]!='?'){
p=new karyawan;
strcpy(p->nama,nama);
gotoxy(15,13);printf("Alamat : ");gets(p->alamat);
if(kepala==NULL)
akhir=p;
p->berikut=NULL;
else
p->berikut=kepala;
kepala=p;
clrscr();
gotoxy(15,11);printf("-----------------------------------------------");
/*menghapus data*/
void hapus_depan()
char jawab;
clrscr();
p1=kepala;
if(kepala==NULL)
gotoxy(31,12);printf("List kosong....!!\n");
getch();
else
gotoxy(17,10);printf("---------------------------------------------");
gotoxy(17,11);printf("Nama : %s",p1->nama);
gotoxy(17,12);printf("Alamat : %s",p1->alamat);
if(jawab=='Y'||jawab=='y'){
if(kepala==akhir)
kepala=NULL;
akhir=NULL;
else
kepala=p1->berikut;
delete p1;
void sisip_belakang()
char nama[20];
int i;
clrscr();
i=1;
gotoxy(15,11);printf("-----------------------------------------------");
while(nama[0]!='?'){
p=new karyawan;
strcpy(p->nama,nama);
gotoxy(15,13);printf("Alamat : ");gets(p->alamat);
if(kepala==NULL)
kepala=p;
p->berikut=NULL;
akhir=kepala;
else
p->berikut=NULL;
akhir=kepala;
while(akhir->berikut!=NULL)
akhir=akhir->berikut;
akhir->berikut=p;
akhir=p;
clrscr();
gotoxy(15,11);printf("-----------------------------------------------");
void hapus_belakang()
char jawab;
clrscr();
if (kepala==NULL)
gotoxy(31,12);printf("List kosong...!!\n");
getch();
else
p1=kepala;
p2=kepala;
while(p1->berikut!=NULL)
p1=p1->berikut;
while(p2->berikut!=p1)
p2=p2->berikut;
gotoxy(17,10);printf("---------------------------------------------");
gotoxy(17,11);printf("Nama : %s",p1->nama);
gotoxy(17,12);printf("Alamat : %s",p1->alamat);
if(jawab=='Y'||jawab=='y'){
p2->berikut=NULL;
p2=akhir;
delete p1;
void sisip_tengah()
char nama[20];
int i;
clrscr();
i=1;
gotoxy(15,11);printf("-----------------------------------------------");
while(nama[0]!='?'){
p=new karyawan;
strcpy(p->nama,nama);
gotoxy(15,13);printf("Alamat : ");gets(p->alamat);
if(kepala==NULL)
kepala=p;
akhir=p;
p->berikut=NULL;
else
x=kepala;
if(kepala==akhir)
akhir->berikut=p;
akhir=p;
akhir->berikut=NULL;
else
while(p->nama>x->berikut->nama)
{x=x->berikut;
p->berikut=x->berikut;
x->berikut=p;
clrscr();
gotoxy(15,11);printf("-----------------------------------------------");
}
}
void hapus_tengah()
char jawab,hnama[20];
clrscr();
if(kepala==NULL)
gotoxy(31,12);printf("List kosong...!!\n");
getch();
else
/*cari data*/
p2=NULL;
p1=kepala;
while(p1&&strcmp(hnama,p1->nama))
p2=p1;
p1=p1->berikut;
clrscr();
if(!p1)
{
gotoxy(26,12);printf("Data tersebut tidak ada...!!\n");
getch();
else
gotoxy(17,10);printf("---------------------------------------------");
gotoxy(17,11);printf("Nama : %s",p1->nama);
gotoxy(17,12);printf("Alamat : %s",p1->alamat);
if(jawab=='Y'||jawab=='y'){
if(!p2)
kepala=p1->berikut;
else
p2->berikut=p1->berikut;
delete p1;
void tampil_data()
int i=1;
struct karyawan *p;
p=kepala;
clrscr();
/*mencetak judul*/
printf(" +-----+----------------------+--------------------------------+--------------+\n");
printf(" +-----+----------------------+--------------------------------+--------------+\n");
while(p){
p=p->berikut;
printf(" +-----+----------------------+--------------------------------+--------------+\n");
getch();