Selasa, 07 Mei 2013

DOUBLE LINK LIST CIRCULAR


Malam semuanya..
Udah lama ngga ngeBlog .. Karna gua lagi sibuk nyiapin ujian perkuliahan :D


Malam ini gue akan ngeSHARE program MINGW yaitu DOUBLE LINK LIST CIRCULAR..
Check it out :)
Semoga bermanfaat yaaaaaaaa !!!




#include<conio.h>
#include<stdio.h>
struct TNode{
char data[30];
TNode *next;
TNode *prev;
};
TNode *head,*tail;
void init(void);
int isEmpty(void);
void insertDepan(char databaru[30]);
void insertBelakang(char databaru[30]);
void inserttengah(char databaru[30],int pilihdepan,int pilihbelakang);
void tampil(void);
void hapusDepan(void);
void hapusBelakang(void);
void deletetengah(int pilih);
void clear(void);
int cari(char elemen[30]);
main()
{
char pilih;
char elm[30];
int depan,belakang;
init();
do
{
printf("\n");
printf("\t\t========================\n");
printf("\t\t||CONTOH PROGRAM||\n");
printf("\t\t||DOUBLE LINK LIST CIRCULAR||\n");
printf("\t\t========================\n");
printf("\t\tMENU PILIHAN: \n");
printf("\t\t========================\n");
printf("\t\t[1] MASUKAN DATA DARI DEPAN\n");
printf("\t\t[2] MASUKAN DATA DARI BELAKANG\n");
printf("\t\t[3] MASUKAN DATA DARI TENGAH\n");
printf("\t\t[4] TAMPILKAN DATA\n");
printf("\t\t[5] HAPUS DATA PALING DEPAN\n");
printf("\t\t[6] HAPUS DATA PALING BELAKANG\n");
printf("\t\t[7] HAPUS DATA DI TENGAH\n");
printf("\t\t[8] HAPUS SEMUA DATA\n");
printf("\t\t[9] CARI DATA\n");
printf("\t\t[0] KELUAR\n");
printf("\t\t========================\n\n");
printf("\t\t========================\n\n");
printf("\n");
printf("\t\t->->PILIHAN ANDA: ");
scanf("%s",&pilih);
switch(pilih)
{
case '1':
tampil();
printf("\n");
printf("\t\tMASUKAN DATA DARI DEPAN\n");
printf("\t\t---------------------\n");
printf("\t\t:: MASUKAN DATA : ");
scanf("%s",&elm);
insertDepan(elm);
getch();
break;
case'2':
tampil();
printf("\n");
printf("\t\tMASUKAN DATA BELAKANG\n");
printf("\t\t---------------------\n");
printf("\t\t:: MASUKAN DATA: ");
scanf("%s",&elm);
insertBelakang(elm);
break;
case'3':
tampil();
printf("\n");
printf("\t\t MASUKAN DATA DARI TENGAH\n");
printf("\t\t---------------------\n");
printf("\t\t:: MASUKAN DATA: ");
scanf("%s",&elm);
printf("\t\t:: DATA DEPAN: ");
scanf("%s",&depan);
printf("\t\t:: DATA BELAKANG: ");
scanf("%s",&belakang);
inserttengah(elm,depan,belakang);
getch();
break;
case '4':
tampil();
printf("\t\t---------------------\n");
printf("\t\tPress Enter to Continue..");
getch();
break;
case '5':
tampil();
hapusDepan();
printf("\n");
printf("\t\t---------------------\n");
printf("\t\tPress Enter to Continue..");
getch();
break;
case '6':
tampil();
hapusBelakang();
printf("\n");
printf("\t\t---------------------\n");
printf("\t\tPress Enter to Continue..");
getch();
break;
case '7':
tampil();
printf("\n");
printf("\t\t MENGHAPUS DATA DARI TENGAH\n");
printf("\t\t-----------------------\n");
printf("\t\t:: DATA NO: ");
scanf("%i",&depan);
deletetengah(depan);
getch();
break;
case '8':
clear();
printf("\t\t DATA TELAH DI HAPUS SEMUA\n");
printf("\t\t-----------------------\n");
printf("\t\t Press Enter to Continue..");
getch();
break;
case '9':
printf("\n");
printf("\t\t MASUKAN DATA YANG DI CARI\n");
printf("\t\t-----------------------\n");
printf("\t\t:: MASUKAN DATA : ");
scanf("%s",&elm);
if(cari(elm)==1){
printf("\n\t\t data success ditemukan");
}else{
printf("\n\t\t Maaf Data Tidak Ditemukan");
}
getch();
break;
case '0':
break;
getch();
default:printf("\t\t Salah Pilih...\n");
break;
}
}while(pilih!='0');
}
void init(void){
head= NULL;
tail= NULL;
}
int isEmpty(void){
if(tail == NULL) return 1;
else return 0;
}
void insertDepan(char databaru[30]){
TNode *baru;
int i;
baru = new TNode;
for(i=0;i<=30;i++){
baru->data[i]=databaru[i];
}
baru->next=baru;
baru->prev=baru;
if(isEmpty()==1){
head=baru;
tail=baru;
head->next=head;
head->prev=head;
tail->next=tail;
tail->prev=tail;
}
else{
baru->next=head;
head->prev=baru;
head=baru;
head->prev=tail;
tail->next=head;
}
printf("\n\t\t DATA MASUK\n");
printf("\t\t Press Enter to Continue..");
}
void insertBelakang(char databaru[30]){
TNode *baru,*bantu;
int i;
baru= new TNode;
for(i=0;i<=30;i++){
baru->data[i]= databaru[i];
}
baru->next=baru;
baru->prev=baru;
if(isEmpty()==1){
head=baru;
tail=baru;
head->next=head;
head->prev=head;
tail->next=tail;
tail->prev=tail;
}
else
{
tail->next=baru;
baru->prev=tail;
tail=baru;
tail->next=head;
head->prev=tail;
}
printf("\t\t Data Masuk\n");
printf("\t\t Press Enter to Continue..");
}
void tampil(void){
int i=0;
if(isEmpty()==0){
do{
i++;
printf("\t\t%i.%s\n",i,head->data);
printf("\t\t-----------------------\n");
head=head->next;
}while(head!=tail->next);
printf("\n");
}else printf("\t\t\t..Masih Kosong..\n\n");
}
void hapusDepan(void){
TNode *hapus;
char d[30];
int i;
if(isEmpty()==0){
if(head !=tail){
hapus = head;
for(i=0;i<=30;i++){
d[i]=hapus->data[i];
}
head=head->next;
tail->next=head;
head->prev=tail;
delete hapus;
}else{
for(i=0;i<=30;i++){
d[i]=head->data[i];
}
head=NULL;
tail=NULL;
}
printf("\t\t%s Terhapus\n",d);
}else printf("\t\t Masih Kosong\n");
}
void hapusBelakang(void){
TNode *hapus;
char d[30];
int i;
if(isEmpty()==0){
if(head !=tail){
hapus= tail;
for(i=0;i<=30;i++){
d[i]= hapus->data[i];
}
tail=tail->prev;
tail->next=head;
head->prev=tail;
delete hapus;
}else{
for(i=0;i<=30;i++){
d[i] = head->data[i];
}
head=NULL;
tail=NULL;
}
printf("\t\t%s Terhapus\n",d);
}else printf("\t\t Masih Kosong\n");
}
void clear(void){
TNode *bantu,*hapus;
if(isEmpty()==0){
bantu=head;
while(bantu->next!=head){
hapus=bantu;
bantu=bantu->next;
delete hapus;
}
head=NULL;
}
}
int cari(char elemen[30]){
int i=0;
int status=0;
if(isEmpty()==0){
do{
i++;
if(head->data[i]==elemen[i]){
status=1;
}else head=head->next;
}while(head !=tail->next&&i<=30);
return(status);
}else printf("\t\t Masih Kosong\n");
}

void inserttengah(char databaru[30],int pilihdepan,int pilihbelakang){
TNode *baru,*bantu,*depan,*belakang;
char elemen[30];
int i;
int j;
baru = new TNode;
for(i=0;i<=30;i++){
baru->data[i]=databaru[i];
}
baru->next=baru;
baru->prev=baru;
if(isEmpty()==1){
head=baru;
tail=baru;
head->next=head;
head->prev=head;
tail->next=tail;
tail->prev=tail;
}else{
depan=head;
belakang=head;
for(i=1;i<pilihbelakang;i++){
belakang=belakang->next;
}
depan->next=baru;
baru->prev=depan;
baru->next=belakang;
belakang->prev=baru;
}
printf("\t\t Data Masuk\n");
printf("\t\t Press Enter to Continue..");
}
void deletetengah(int pilih){
TNode *hapusdepan,*hapusbelakang,*hapustengah;
char d[30];
int i,j;
if(isEmpty()==0){
if(head!=tail){
hapusdepan=head;
hapusbelakang=head;
hapustengah=head;
for(i=1;i<pilih;i++){
hapusdepan=hapusdepan->next;
}
for(i=1;i<(pilih+2);i++){
hapusbelakang=hapusbelakang->next;
}
for(i=1;i<pilih;i++){
hapustengah=hapustengah->next;
}
for(j=1;j<pilih;j++){
for(i=0;i<=30;i++){
d[i]= hapustengah->data[i];
}
hapustengah=hapustengah->next;
}
delete hapustengah;
hapusdepan->next=hapusbelakang;
hapusbelakang->prev=hapusdepan;
}else{
for(i=0;i<=30;i++){
d[i]=hapustengah->data[i];
}
head=NULL;
tail=NULL;
}
printf("\t\t%s Success Terhapus\n",d);
}else printf("\t\t Masih Kosong\n");
}

Created: By bella Yulianita

0 komentar:

Posting Komentar

© Bella Yulianita 2012 | Blogger Template by Enny Law - Ngetik Dot Com - Nulis