Linked List merupakan konsep dasar struktur data dinamis adalah alokasi memori yang dilakukan secara dinamis. Pada konsep ini, terdapat suatu struktur yang disebut dengan struktur referensi diri (self-referential structure), mempunyai anggota pointer yang menunjuk ke struktur yang sama dengan dirinya sendiri.
coding:
#include<cstdlib>
#include<iostream>
#include<stdlib.h>
struct SIMPUL{
char NAMA[20];
char NIM[15];
char GENDER;
int NILAI;
struct SIMPUL*LINK;
};
SIMPUL*P,*Q,*FIRST,*LAST;
void BUAT_SIMPUL(void);
void INIT(void);
void INSERT(void);
void AWAL(void);
void INSERT_KANAN();
void CETAK(void);
void FREE_MEMORY(void);
int PIL;
char PILIHAN[1],HURUF;
using namespace std;
int main(void)
{
INIT();
do
{
system("cls");
cout<<"LIN.SINGLY LINKED LIST"<<endl;
cout<<"======================"<<endl;
cout<<"1. INSERT DATA"<<endl;
cout<<"2. CETAK DATA"<<endl;
cout<<"3. EXIT"<<endl;
cout<<"PILIHAN (1-3):"<<endl;cin>>PILIHAN;
PIL=atoi(PILIHAN);
switch (PIL)
{
case 1:
INSERT();
break;
case 2:
CETAK();
break;
default:
cout<<"TERIMA KASIH"<<endl;
FREE_MEMORY();
break;
}
}
while (PIL<4);
return 0;
}
void BUAT_SIMPUL(void)//Buat simpul baru
{
P=(SIMPUL*)malloc(sizeof(SIMPUL));
if(P!=NULL)
{
cout<<"Nama :";cin>>P->NAMA;
cout<<"NIM :";cin>>P->NIM;
cout<<"GENDER :";cin>>P->GENDER;
cout<<"NILAI :";cin>>P->NILAI;
system("PAUSE");
}
else
{
cout<<"Pembuatan Simpul Gagal"<<endl;
system("PAUSE");
exit(1);
}
}
void INIT(void)//Inisialisasi
{
FIRST=NULL;
LAST=NULL;
}
void AWAL(void)//Pembuatan Simpul Pertama
{
FIRST=P;
LAST=P;
P->LINK=NULL;
}
void INSERT_KANAN(void)
{
LAST->LINK=P;
LAST=P;
P->LINK=NULL;
}
void INSERT(void)//Insert satu simpul diujung kanan
{
BUAT_SIMPUL();
if(FIRST==NULL){
AWAL();
system("PAUSE");
}
else
INSERT_KANAN();
system("PAUSE");
}
void CETAK()//Cetak seluruh data linked list
{
int i=1;
if(FIRST!=NULL)
{
Q=FIRST;
while(Q!=NULL)
{
cout<<"Data ke: "<<i++<<endl;
cout<<"Nama: "<<Q->NAMA<<endl;
cout<<"NIM: "<<Q->NIM<<endl;
cout<<"GENDER: "<<Q->GENDER<<endl;
cout<<"NILAI: "<<Q->NILAI<<endl;
Q=Q->LINK;
cout<<endl;
}
system("PAUSE");
}
else
cout<<"Data Kosong"<<endl;
system("PAUSE");
}
void FREE_MEMORY(void)
{
while(FIRST=NULL)
{
Q=FIRST->LINK;
free(FIRST);
FIRST=Q;
}
}
|
0 komentar:
Posting Komentar