hallo mante-mante ketemu lagi,,,,,
akhir2 ini aku jarang masukin postingan ku,,,soalnya tugas ku lagi numpuk ne,,,
heheheheheh!!!!!!!!
oh yah hari ini q dari baru dapat materi baru dosen q,,,yah susah2 gampang ceah......
lanhsung aja ke program yah?????
program kali ini thu tentang link listd,,,,
teman-teman udah tau kan apa itu link listd,,,,????
bagi pemula seperti aq ceahhh,,, rasanya susah bngt ngerjainx,,,tapi akhrinya sukses juga.
kita langsung aja ke coding programnya!!!!!
PROGRAM LINK LISTD...
#include <iostream.h>
#include <conio.h>
#include <malloc.h>
typedef struct Node *Pnode;
struct Node
{
int info;
Pnode Next;
};
void inisialisasi(Pnode *Head,Pnode *Tail)
{
*Head=*Tail=NULL;
}
Pnode CreateNode (int Data)
{
Pnode Node_baru;
Node_baru=(Pnode) malloc(sizeof(Node));
Node_baru->info=Data;
Node_baru->Next=NULL;
return(Node_baru);
}
void InsertFirst(Pnode *Head,Pnode *Tail,int Data)
{
Pnode Node_baru;
Node_baru = CreateNode(Data);
if(*Head==NULL)
{*Head =*Tail =Node_baru;}
else
{Node_baru->Next =*Head;
*Head=Node_baru;}
}
void DeleteFirst (Pnode*Head,Pnode*Tail)
{
Pnode bantu;
if(*Head==NULL)
{cout<<"list kosong";}
else if(*Head == *Tail)
{
free(*Head);
*Head=*Tail=NULL;
cout<<"node berhasil di hapus,saat ini list kosong";
}
else
{
bantu=*Head;
*Head=(*Head)->Next;
free(bantu);
cout<<"node awal berhasil di hapus";
}
}
void InsertLast(Pnode *Head,Pnode *Tail,int Data)
{
Pnode Node_baru;
Node_baru=CreateNode(Data);
if(*Head==NULL)
{*Head=*Tail=Node_baru;}
else
{Node_baru->Next = *Head;
*Head =Node_baru;}
}
void DeleteLast (Pnode*Head,Pnode*Tail)
{
Pnode bantu;
if(*Head==NULL)
{cout<<"list kosong";}
else if(*Head==*Tail)
{
free(*Head);
*Head=*Tail=NULL;
cout<<"node berhasil di hapus,saat ini list kosong";
}
else
{
bantu=*Head;
while(bantu->Next !=*Tail)
{
bantu=bantu->Next;
}
free(*Tail);
bantu->Next=NULL;
*Tail=bantu;
cout<<"node akhir berhasil di hapus";
}
}
void InsertAfter(Pnode *Head,Pnode *Tail, int Data, int posisi)
{
Pnode Node_baru,bantu;
int jml_Node, x;
if(*Head==NULL)
{InsertFirst(Head,Tail,Data);}
else
{
jml_Node=1;
bantu=*Head;
while(bantu->Next !=NULL)
{ bantu=bantu->Next;
jml_Node++;}
if(posisi<=1)
{InsertFirst(Head,Tail,Data);}
else if(posisi>jml_Node)
{InsertLast(Head,Tail,Data);}
else
{
Node_baru=CreateNode(Data);
bantu = *Head;
x=1;
while (x< (posisi-1))
{bantu=bantu->Next;
x++;}
Node_baru->Next=bantu->Next;
bantu->Next=Node_baru;
}
}
}
void DeleteAfter(Pnode *Head,Pnode *Tail, int posisi)
{
Pnode bantu,bantu2;
int jml_Node, x;
if(*Head==NULL)
{cout<<"list kosong";}
else
{
jml_Node=1;
bantu=*Head;
while(bantu->Next!=NULL)
{bantu=bantu->Next;
jml_Node++;}
if((posisi<1)||(posisi>jml_Node))
{cout<<"posisi di luar jangkauan."<<endl;}
else if(posisi==1)
{DeleteFirst(Head,Tail);}
else if(posisi==jml_Node)
{DeleteLast(Head,Tail);}
else
{
bantu=*Head;
x=1;
while(x<(posisi-1))
{ bantu=bantu->Next;
x++;}
bantu2=bantu->Next;
bantu->Next=bantu2->Next;
free(bantu2);
}
}
}
int searching(Pnode Head,int Data)
{
Pnode bantu;
int posisi=1,ketemu=0;
bantu=Head;
while((bantu!=NULL)&&(ketemu==0))
{
if(bantu->info==Data)
{ketemu=1;}
else
{
bantu=bantu->Next;
posisi++;
}
}
if(ketemu==1)
return posisi;
else
return 0;
}
void Print(Pnode Head)
{
Pnode bantu;
if (Head!=NULL)
{
bantu=Head;
while(bantu!=NULL)
{
cout<<bantu->info<<"->";
bantu=bantu->Next;
}
}
else
{cout<<"list kosong";}
}
void main()
{
int pilihan,baru;
Pnode Head,Tail;
inisialisasi(&Head,&Tail);
do
{
clrscr();
cout<<"**************************"<<endl;
cout<<"**************************"<<endl;
cout<<" MELANI SUHAENY "<<endl;
cout<<" 110030126 "<<endl;
cout<<"JURUSAN (SISTEM INFORMASI)"<<endl;
cout<<"--------------------------"<<endl;
cout<<"##########################"<<endl;
cout<<"1.insert node di awal list"<<endl;
cout<<"2.insert node di akhir list"<<endl;
cout<<"3.menghapus node awal dari list"<<endl;
cout<<"4.menghapus node akhir darilist"<<endl;
cout<<"5.print data dalam list"<<endl;
cout<<"6.menambahkan data pada posisi tertentu"<<endl;
cout<<"7.menghapus data pada posisi tertentu"<<endl;
cout<<"8.mencari data dalam list"<<endl;
cout<<endl;
cout<<"pilihan=";
cin>>pilihan;
clrscr();
switch(pilihan)
{
case 1:
{ cout<<"data yang akan ditambahkan=";
cin>>baru;
InsertFirst(&Head,&Tail,baru);
cout<<"data berhasil ditambahkan";
getch();
break;}
case 2:
{ cout<<"data yang akan ditambahkan=";
cin>>baru;
InsertLast(&Head,&Tail,baru);
cout<<"data berhasil ditambahkan";
getch();
break;}
case 3:
{ DeleteFirst(&Head,&Tail);
getch();
break;}
case 4:
{ DeleteLast(&Head,&Tail);
getch();
break;}
case 5:
{ Print(Head);
getch();
break;}
case 6:
{ cout<<"data yang akan di tambahkan=";
cin>>baru;
InsertAfter(&Head,&Tail,baru,baru);
cout<<"data berhasil ditambahkan";
getch();
break;}
case 7:
{ DeleteAfter(&Head,&Tail,baru);
getch();
break;}
case 8:
{ cout<<"data yang akan di cari=";
cin>>baru;
InsertAfter(&Head,&Tail,baru,baru);
cout<<"data berhasil ditambahkan";
getch();
break;}
default:
{ cout<<"tidak ada dalam pilihan"<<endl;}
}
}while(pilihan>=1&&pilihan<=8);
getch(); }
semoga program/ coding di atas dapat membantu teman2 yah,,,,
mohon saran yah!!!!