DESKRIPSI
MATERI
MODUL 11
: LINEAR SINGLY LINKED LIST
Mata Kuliah :
Struktur Data
PENGANTAR
Linked
list adalah sejumlah obyek yang dihubungkan satu dengan yang lainnya sehingga
membentuk suatu list/daftar. Obyek itu sendiri merupakan gabungan beberapa
elemen data (variabel) yang dijadikan satu kelompok atau struktur atau record
yang dibentuk dengan perintah struct.
Untuk
menghubungkan obyek satu dengan yang obyek lainnya diperlukan paling tidak satu
buah variabel bertipe pointer.
Dikenal
ada dua list yaitu Contiguous List atau array dan Linked List. Array bersifat
statis sedangkan Linked List bersipat dinamis. Contiguous List (daftar yang
bersebelahan/berdampingan) adalah sekumpulan obyek yang bersebelahan satu dengan
yang lain sehingga membentuk suatu list/daftar.
TUJUAN
PERKULIAHAN
Setelah
menyelesaikan perkuliahan, mahasiswa diharapkan mampu:
§ Menyebutkan pengertian
linear singly linked list
§ Menyebutkan
proses dan langkah dari setiap proses dalam setiap proses
§ Membuat fungsi
setiap proses dan program aplikasi sederhana menggunakan Bahasa C++
DESKRIPSI MATERI : LINEAR SINGLY LINKED LIST
Pengertian
Link List:
sejumlah obyek yang dilink/dihubungkan satu dengan lainnya.
Obyek :
gabungan bebrapaelemen data yg dijadikan satu kelompok/struktur/record
Untuk
menghubungkan antar obyek perlu variabel tipe pointer yg merupakan salah satu
variabel dalam struktur obyek.
Linear Singly
Linked List : Link list lurus dengan pointer tunggal
I.
Ilustrasi
- Ada
4 simpul : 1, 2, 3, 4
- Setiap
simpul terdiri dari 2 elemen/field, yaitu :
- INFO
: bertipe integer
- LINK : bertipe pointer
- Simpul
no.1 :
- Field
INFO berisi 10
- Field
LINK berisi alamat simpul no. 2
- Simpul
no.1 ditunjuk oleh pointer FIRST
- Simpul
no.4 ditunjuk oleh pointer LAST
Ilustrasi
sebuah simpul :
Untuk
mempersiapkan sebuah linked list maka harus dideklarasikan sbb :
struct SIMPUL{
int
INFO;
struct
SIMPUL *LINK;
};
SIMPUL
*P,*Q,*FIRST,*LAST;
|
II. Proses
- Inisialisasi
: persiapan pembuatan linked list
- Membuat
simpul awal
- Insert
simpul kedalam linked list
- Delete
simpul dari linked list
II.1. Inisialisasi
FIRST = NULL;
LAST = NULL;
|
II.2. Pembuatan simpul
Instruksi untuk membuat sebuah simpul :
P=(SIMPUL*) malloc(sizeof(SIMPUL));
|
Akan terbentuk sebuah simpul yang alamatnya tersimpan dalam
pointer P. Ilustrasi :
Fungsi untuk membuat simpul :
void
BUAT_SIMPUL(int X)
{
P=(SIMPUL*) malloc(sizeof(SIMPUL));
if(P!=NULL)
{
P->INFO=X;
}
else
cout<<”Pembuatan
simpul gagal”;
}
|
Ilustrasi
:
Contoh :
#include<iostream.h>
#include<stdlib.h>
struct SIMPUL{
int INFO;
struct SIMPUL *LINK;
};
SIMPUL *P,*FIRST,*LAST;
void
BUAT_SIMPUL(int);
void main(void)
{
int x;
cout<<"Masukan Data :
";cin>>x;
BUAT_SIMPUL(x);
cout<<"Data :
"<<P->INFO<<endl;
}
void
BUAT_SIMPUL(int x)
{
P=(SIMPUL *)malloc(sizeof(SIMPUL));
if(P!=NULL)
P->INFO=x;
else
cout<<"Pembuatan
Simpul Gagal"<<endl;
}
|
II. 3. Pembuatan simpul awal
Menjadikan sebuah simpul menjadi simpul awal dari sebuah
linked list. Simpul awal ditunjuk oleh pointer FIRST.
Fungsi :
Void AWAL(void)
{
if(FIRST==NULL)
{
FIRST=P;
LAST=P;
P->LINK=NULL;
}
else
cout<<”Linked
List sudah ada””<<endl;
}
|
Ilustrasi :
Sudah dibuat simpul sbb:
FIRST=P
|
LAST=P atau
LAST=FIRST
|
|
P->LINK=NULL atau
FIRST->LINK=NULL atau
LAST->LINK=NULL
|
II.4. Insert Kanan
Menyisipkan sebuah simpul baru pada ujung kanan linked list.
Proses :
- sudah ada linked list
- buat simpul baru
- sisipkan simpul baru tsb diujung
kanan linked list
Fungsi :
void INSERT_KANAN(void)
{
if(LAST!=NULL)
{
LAST->LINK=P;
LAST=P;
P->LINK=NULL;
}
else
cout<<”Linked List belum
ada”;
}
|
Ilustrasi
:
Sudah ada linked list
|
|
Buat simpul baru
P=(SIMPUL
*)malloc(sizeof(SIMPUL));
|
|
LAST->LINK=P atau
FIRST->LINK=P
|
|
LAST=P atau
LAST=FIRST->LINK
|
|
P->LINK=NULL atau
LAST->LINK=NULL atau
FIRST->LINK->LINK=NULL
|
II.5. Insert Kiri
Menyisipkan sebuah simpul baru pada ujung kiri linked list.
Proses :
- sudah ada linked list
- buat simpul baru
- sisipkan simpul baru tsb diujung
kiri linked list
Fungsi :
void
INSERT_KIRI(void)
{
if(FIRST!=NULL)
{
P->LINK=FIRST;
FIRST=P;
}
else
cout<<”Linked
List belum ada”;
}
|
Ilustrasi:
Sudah ada linked list
|
Buat simpul baru
P=(SIMPUL
*)malloc(sizeof(SIMPUL));
|
|
P->LINK=FIRST atau
P->LINK=LAST
|
|
FIRST=P
|
II.6. Insert Tengah
Menyisipkan sebuah simpul antara dua buah simpul pada linked
list.
setelah
diinsert menjadi :
Syarat :
simpul no.7 harus sudah ditunjuk oleh pointer Q, caranya :
Q=FIRST;
For(i=1;i<=6;i++)
Q=Q->LINK;
|
Fungsi :
Void INSERT_TENGAH(void)
{
P->LINK=Q->LINK;
Q->LINK=P;
}
|
Ilustrasi :
Sudah
ada linked list
|
Buat
simpul baru
P=(SIMPUL
*)malloc(sizeof(SIMPUL));
|
P->LINK=Q->LINK
|
Q->LINK=P
|
Contoh 1
#include <cstdlib>
#include <iostream>
struct SIMPUL{
int INFO;
struct SIMPUL *LINK;
};
SIMPUL *P,*FIRST,*LAST;
void BUAT_SIMPUL(int);
using namespace std;
int main(int argc, char *argv[])
{
int x;
cout<<"Masukan Data
: ";cin>>x;
BUAT_SIMPUL(x);
cout<<"Data :
"<<P->INFO<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
void BUAT_SIMPUL(int x)
{
P=(SIMPUL
*)malloc(sizeof(SIMPUL));
if(P!=NULL)
P->INFO=x;
else
cout<<"Pembuatan
Simpul Gagal"<<endl;
}
Contoh 2
#include
<cstdlib>
#include
<iostream>
#include<conio.h>
using namespace std;
struct SIMPUL{
char NAMA[10];
char NIM[10];
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 CETAKLAYAR(void);
void
FREE_MEMORY(void);
int PIL;
char
PILIHAN[1],HURUF;
int main(int argc,
char *argv[])
{
INIT();
do{
system("cls");
cout<<"LIN. SINGLY LINKED LIST"<<endl;
cout<<"======================="<<endl;
cout<<"1. INSERT DATA"<<endl;
cout<<"3. CETAK DATA"<<endl;
cout<<"4. EXIT"<<endl<<endl;
cout<<"PILIHAN (1 - 4): "; cin>>PILIHAN;
PIL=atoi(PILIHAN);
switch (PIL)
{
case 1:
INSERT();
break;
case 3:
CETAKLAYAR();
break;
default:
cout<<"TERIMA
KASIH"<<endl;
FREE_MEMORY();
break;
}
}while (PIL<4);
system("PAUSE");
return EXIT_SUCCESS;
}
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;
}
else
{
cout<<"Pembuatan Simpul Gagal"<<endl;
getch();
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();
else
INSERT_KANAN();
}
void
CETAKLAYAR()//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;
}
}
else
cout<<"Data
Kosong"<<endl;
getch();
}
void
FREE_MEMORY(void)
{
while(FIRST!=NULL)
{
Q=FIRST->LINK;
free(FIRST);
FIRST=Q;
}
}
REFERENSI BUKU
1.
Abdul kadir, Panduan Pemrograman Visual C++, Penerbit
Andi Yogyakarta
2.
Rinaldi Munir, Algoritma dan Pemrograman, Edisi-3,
Informatika Bandung
3.
M. Sjukani, Algoritma dan Struktur Data dengan C, C++,
dan Java, Mitra Wacana Media
4.
H.M. Deitel, C How To Program, 3rd, Prentice Hall
DESKRIPSI
MATERI
MODUL 12
: LINEAR SINGLY LINKED LIST(DELETE)
Mata Kuliah :
Struktur Data
PENGANTAR
Linked
list adalah sejumlah obyek yang dihubungkan satu dengan yang lainnya sehingga
membentuk suatu list/daftar. Obyek itu sendiri merupakan gabungan beberapa
elemen data (variabel) yang dijadikan satu kelompok atau struktur atau record
yang dibentuk dengan perintah struct.
Untuk
menghubungkan obyek satu dengan yang obyek lainnya diperlukan paling tidak satu
buah variabel bertipe pointer.
Dikenal
ada dua list yaitu Contiguous List atau array dan Linked List. Array bersifat
statis sedangkan Linked List bersipat dinamis. Contiguous List (daftar yang
bersebelahan/berdampingan) adalah sekumpulan obyek yang bersebelahan satu
dengan yang lain sehingga membentuk suatu list/daftar.
Pada
modulini akan dibahas proses DELETE.
TUJUAN
PERKULIAHAN
Setelah
menyelesaikan perkuliahan, mahasiswa diharapkan mampu:
§ Menyebutkan pengertian
linear singly linked list
§ Menyebutkan
proses dan langkah dari setiap proses dalam setiap proses
§ Membuat fungsi
setiap proses dan program aplikasi sederhana menggunakan Bahasa C++
DESKRIPSI MATERI : LINEAR SINGLY LINKED LIST(DELETE)
Delete Kanan/Akhir
Menghapus
simpul yang ada pada linked list paling akhir/kanan.
sudah ada
sebuah linked list :
akan dihapus
simpul terakhir menjadi :
Syarat agar
simpul no.8 dapat dihapus adalah simpul no.7 sudah ditunjuk oleh pointer Q.
Caranya :
Q = FIRST;
while(Q
->LINK != LAST)
Q = Q -> LINK;
Program diatas
pertama-tama menempatkan Q pada simpul awal. Kemudian Q bergerak ke kanan
sampai LINK = LAST atau Q menunjuk simpul nomor 7. Pernyataan Q = Q -> LINK
artinya Q akan bergerak kearah belakang satu langkah.
Fungsinya :
void
DELETE_KANAN(void)
{
free(LAST);
LAST = Q;
LAST -> LINK = NULL;
}
Ilustrasi :
a. Sudah ada
linked list. Q sudah menunjuk simpul nomor 7.
b. free(LAST)
Pernyataan diatas akan menghapus
simpul yang paling akhir. Karena simpul nomor 7 sekarang menjadi simpul paling
akir maka pointer LAST harus dipindahkan agar menunjuk simpul nomor 7 dengan
pernyataan berikut :
c. LAST = Q
Pointer
LAST harus selalu menunjuk simpul yang paling akhir. Dari gamar diatas Nampak
bahwa QÃ LINK belum menunjuk kemana-mana.
Pointer pada simpul terakhir harus selalu menunjuk ke NULL, dilakukan dengan
pernyataan berikut :
d. LAST ->
LINK = NULL
Proses
penghapusan telah selesai.
Delete Kiri/Awal
Menghapus
simpul yang ada pada linked list paling awal/kiri.
Ilustrasi :
sudah ada sebuah linked list
sudah ada sebuah linked list
akan dihapus
simpul awal menjadi :
Fungsinya :
void
DELETE_KIRI(void)
{
Q = FIRST;
FIRST = Q -> LINK;
free(Q);
}
Ilustrasi :
a. Sudah ada
linked list
b. Q = FIRST
Untuk
bias menghapus simpul awal maka perlu bantuan pointer Q menunjuk ke simpul
awal. Penghapusan dilakukan menggunakan pointer Q sedangkan pointer FIRST harus
pindah ke simpul berikutnya sebelum proses penghapusan dilakukan.
c. FIRST = Q
-> LINK
Perintah
c akan memindahkan pointer FIRST ke simpul nomor 2.
d. free(Q)
Karena
FIRST sudah pindah ke belakang maka simpul pertama dapat dengan mudah dihapus.
Jika penghapusan dilakukan sebelum ponter FIRST pindah maka pointer FIRST tidak
akan bias pindah ke simpul nomor 2.
Cara lain:
Tempatkan Q
pada simpulkedua, hapus simpul pertama, pindahkan FIRST ke simpul kedua.
Delete Tengah
Menghapus
simpul yang ada diantara dua simpul lain
sudah ada
linked list
simpul no.7
akan dihapus sehingga menjadi :
Syarat agar
simpul no.7 bisa dihapus maka simpul no.6 harus sudah ditunjukoleh Q.
Caranya :
Q = FIRST;
For(I = 1; I
<= 5; I++)
Q = Q -> LINK;
Perintah
diatas akan memindahkan pointer Q secara terus menerus sebanyak 5 langkah
hingga Q menunjuk simpul nomor 6.
Fungsi :
void
DELETE_TENGAH(void)
{
R = Q -> LINK;
Q -> LINK = R -> LINK;
free(R);
}
Ilustrasi :
a. Sudah ada
linked list :
b. R = Q ->
LINK
Diperlukan
bantuan pointer R untuk menghapus simpul nomor 7 dan untuk menyambungkan
pointer LINK pada simpul nomor 6 ke simpul nomor 8.
c. Q -> LINK =
R -> LINK
Dari gambar
Nampak bahwa simpul nomor 7 sudah terlepas dari linked list sehingga dapat
langsung dihapus dengan menggunakan pointer R.
d. free(R)
Dengan
pernyataan free(R) maka simpul nomor 7 akan hilang dari memori.
Contoh program
#include <cstdlib>
#include <iostream>
#include<conio.h>
using namespace std;
struct SIMPUL{
char NAMA[10];
char
NIM[10];
char
GENDER;
int
NILAI;
struct
SIMPUL *LINK;
};
SIMPUL *P,*Q,*FIRST,*LAST;
void BUAT_SIMPUL(void);
void INIT(void);
void INSERT(void);
void DELETE(void);
void AWAL(void);
void INSERT_KANAN();
void DELETE_KANAN();
void CETAKLAYAR(void);
void FREE_MEMORY(void);
int PIL;
char PILIHAN[1],HURUF;
int main(int argc, char *argv[])
{
INIT();
do{
system("cls");
cout<<"LIN. SINGLY LINKED
LIST"<<endl;
cout<<"======================="<<endl;
cout<<"1. INSERT
DATA"<<endl;
cout<<"2. HAPUS
DATA"<<endl;
cout<<"3. CETAK
DATA"<<endl;
cout<<"4.
EXIT"<<endl<<endl;
cout<<"PILIHAN (1 - 4): ";
cin>>PILIHAN;
PIL=atoi(PILIHAN);
switch (PIL)
{
case 1:
INSERT();
break;
case 2:
DELETE();
break;
case 3:
CETAKLAYAR();
break;
default:
cout<<"TERIMA
KASIH"<<endl;
FREE_MEMORY();
break;
}
}while (PIL<4);
system("PAUSE");
return EXIT_SUCCESS;
}
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;
}
else
{
cout<<"Pembuatan Simpul
Gagal"<<endl;
getch();
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 DELETE_KANAN(void)
{
if(FIRST==LAST)//Baru ada satu simpul
{
free(LAST);//Atau
free(FIRST)
INIT();
}
else
{
Q
= FIRST;
while(Q
->LINK != LAST)
Q
= Q -> LINK;
free(LAST);
LAST
= Q;
LAST
-> LINK = NULL;
}
}
void INSERT(void)//Insert satu simpul
diujung kanan
{
BUAT_SIMPUL();
if(FIRST==NULL)
AWAL();
else
INSERT_KANAN();
}
void DELETE(void)//Delete satu simpul
terakhir
{
if(LAST==NULL)
{
cout<<"Data
belum ada"<<endl;
getch();
}
else
{
DELETE_KANAN();
cout<<"Data terakhir dihapus"<<endl;
getch();
}
}
void CETAKLAYAR()//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;
}
}
else
cout<<"Data
Kosong"<<endl;
getch();
}
void FREE_MEMORY(void)
{
while(FIRST!=NULL)
{
Q=FIRST->LINK;
free(FIRST);
FIRST=Q;
}
}
REFERENSI BUKU
1.
Abdul kadir, Panduan Pemrograman Visual C++, Penerbit
Andi Yogyakarta
2.
Rinaldi Munir, Algoritma dan Pemrograman, Edisi-3,
Informatika Bandung
3.
M. Sjukani, Algoritma dan Struktur Data dengan C, C++,
dan Java, Mitra Wacana Media
4.
H.M. Deitel, C How To Program, 3rd, Prentice Hall
DESKRIPSI
MATERI
MODUL 15
: APLIKASI LINKED LIST PADA QUEUE
Mata Kuliah :
Struktur Data
TUJUAN
PERKULIAHAN
Setelah
menyelesaikan perkuliahan, mahasiswa diharapkan mampu:
§ Memahami
proses yang ada pada Queue menggunakan linked list
§ Membuat
fungsi-fungsi yang ada dalam Queue menggunakan linked list
§ Membuat fungsi
setiap proses dan program aplikasi sederhana menggunakan Bahasa C++
DESKRIPSI MATERI : APLIKASI LINKED LIST PADA QUEUE
Ilustrasi untuk QUEUE tanpa menggunakan Simpul Head :
Proses : FIFO
INSERT :
selalu Insert Kanan
DELETE : selalu Delete Kiri
Bila FRONT =
REAR artinya antrian tinggal 1 (simpul awal)
Bila FRONT =
NULL artinya antrian kosong
Deklarasi :
struck SIMPUL{
int
INFO;
struck
SIMPUL *LINK;
};
SIMPUL
*P,*Q,*FRONT,*REAR;
|
Inisialisasi
FRONT = NULL;
REAR = NULL;
|
Pembuatan
Simpul Baru :
void BUAT_SIMPUL(int X)
{
P=(SIMPUL *)malloc(sizeof(SIMPUL));
if(P!=NULL)
P->INFO=X;
else
{
cout<<”Membuat simpul gagal”;
exit(1);
}
}
|
INSERT (Insert
Kanan atau BuatAwal)
void INSERT(void)
{
if(FRONT==NULL)
{
FRONT=P;
REAR=P;
REAR->LINK=NULL;
}
else
{
REAR->LINK=P;
REAR=P;
REAR->LINK=NULL;
}
}
|
DELETE (Delete
Kiri)
Int DELETE(void)
{
int X;
if(FRONT!=NULL)
{
X=FRONT->INFO;
Q=FRONT->LINK;
free(FRONT);FRONT=Q;
return(X);
}
else
cout<<”Queue Kosong”;
}
|
STUDI KASUS :
Buat program
animasi Queue menggunakan Linked List tanpa Head untuk mengelola data mahasiswa
dengan struktur mahasiswa sbb : NAMA, NIM, GENDER, NILAI STRUKTUR DATA. Program
dibuat dalam bentuk menu dengan pilihan : INSERT DATA, HAPUS DATA, CETAK DATA,
EXIT.
REFERENSI BUKU
1.
Abdul kadir, Panduan Pemrograman Visual C++, Penerbit
Andi Yogyakarta
2.
Rinaldi Munir, Algoritma dan Pemrograman, Edisi-3,
Informatika Bandung
3.
M. Sjukani, Algoritma dan Struktur Data dengan C, C++,
dan Java, Mitra Wacana Media
4.
H.M. Deitel, C How To Program, 3rd, Prentice Hall
DESKRIPSI
MATERI
MODUL 16
: LINEAR DOUBLY LINKED LIST
Mata Kuliah :
Struktur Data
PENGANTAR
Linked list adalah sejumlah obyek yang dihubungkan satu dengan yang
lainnya sehingga membentuk suatu list/daftar. Obyek itu sendiri merupakan
gabungan beberapa elemen data (variabel) yang dijadikan satu kelompok atau
struktur atau record yang dibentuk dengan perintah struct.
Untuk menghubungkan obyek satu dengan yang obyek lainnya diperlukan
paling tidak satu buah variabel bertipe pointer.
Dikenal ada dua list yaitu Contiguous List atau array dan Linked List.
Array bersifat statis sedangkan Linked List bersipat dinamis. Contiguous List (daftar
yang bersebelahan/berdampingan) adalah sekumpulan obyek yang bersebelahan satu dengan
yang lain sehingga membentuk suatu list/daftar.
TUJUAN
PERKULIAHAN
Setelah
menyelesaikan perkuliahan, mahasiswa diharapkan mampu:
§ Menyebutkan pengertian
linear doubly linked list
§ Menyebutkan
proses dan langkah dalam linear doubly linked list
§ Membuat fungsi
setiap proses dan program aplikasi sederhana menggunakan Bahasa C++
DESKRIPSI MATERI : LINEAR DOUBLY LINKED LIST
REFERENSI BUKU
1.
Abdul kadir, Panduan Pemrograman Visual C++, Penerbit
Andi Yogyakarta
2.
Rinaldi Munir, Algoritma dan Pemrograman, Edisi-3,
Informatika Bandung
3.
M. Sjukani, Algoritma dan Struktur Data dengan C, C++,
dan Java, Mitra Wacana Media
4.
H.M. Deitel, C How To Program, 3rd, Prentice Hall