Latihan 1 :
//double linked list non circular
//vs 2012 express [RS]
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <iomanip>
using namespace std;
void inisialisasi()
{
head = NULL;
tail = NULL;
}
int isEmpty()
{
if(head == NULL)
return 1;
else
return 0;
}
}
else
cout<<"\nLinked List kosong penghapusan tidak dapat dilakukan"<<endl;
}
void cetak()
{
print = head;
if(head!=NULL)
{
while(print!=NULL)
{
cout<<"\n\t"<<print->data;
print = print->next;
}
}
else
cout<<"\nTidak ada data dalam linked list"<<endl;
}
void menu()
{
char pilih, ulang;
int data;
do
{
system("CLS");
menu :
cout<<"DOUBLE LINKED LIST NON CIRCULAR"<<endl;
cout<<"-------------------------------"<<endl;
cout<<"Menu: ";
cout<<"\n1. Entry Data";
cout<<"\n2. Hapus Data";
cout<<"\n3. Cetak Data";
cout<<"\n4. Keluar";
cout<<"\nMasukkan pilihan Anda : ";
cin>>pilih;
switch(pilih)
{
case '1' :
cout<<"\nMasukkan Data : ";
cin>>data;
input(&data);
cout<<"\n"<<data<<" telah ditambahkan"<<endl;
break;
case '2' :
hapus();
break;
case '3' :
cetak();
break;
case '4' :
cout<<"\nTerima kasih telah menggunakan program ini"<<endl;
exit(0);
break;
default :
cout<<"\nPilih ulang"<<endl;
goto menu;
}
cout<<"\nKembali ke menu? (y/n)";
cin>>ulang;
}while(ulang=='y' || ulang =='Y');
}
int main()
{
inisialisasi();
menu();
return 0;
}
Latihan 2 :
Contoh Program
Berikut contoh implementasi double link list untuk menambahkan data didepan ,
belanga dan membaca data maju.
Source code
#pragma hdrstop
#include <iostream>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#pragma argsused
main()
{
SeneraiGanda *SnrGd=new SeneraiGanda();
buat (SnrGd);
data hasil;
char pilih='1';
while (pilih=='1' || pilih=='2' || pilih=='3')
{
cout<<"Pilih menu"<<endl;
cout<<"1. Tambah Depan"<<endl;
cout<<"2. Tambah Belakang"<<endl;
cout<<"3. Baca Maju"<<endl;
cout<<"4. Selesai"<<endl;
cout<<"Pilihan = ";cin>>pilih;
switch(pilih)
{
case '1':
{
cout<<"Masukkan datanya : ";
cin>>hasil;
Tambah_Depan(SnrGd, hasil);
system("cls");
} break;
case '2':
{
system("cls");
Baca_Maju(SnrGd);
} break;
default :
{
cout<<"Selesai. Tekan enter";
} break;
}
}
getch();
delete (SnrGd);
}
Latihan 3 :
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
struct node
{
char nama [20];
int umur;
float tinggi;
node *prev, *next;
};
int main()
{
do
{
cout<<"MENU DOUBLE LINKEDLIST"<<endl;
cout<<"1. Tambah Depan"<<endl;
cout<<"2. Tambah Belakang"<<endl;
cout<<"3. Hapus Depan"<<endl;
cout<<"4. Hapus Belakang"<<endl;
cout<<"5. Tampilkan"<<endl;
cout<<"6. Selesai"<<endl;
cout<<"Pilihan Anda : ";
cin>>pil;
pilih();
}
while(pil!=6);
}
void pilih()
{
if(pil==1)
tambah_depan();
else if(pil==2)
tambah_belakang();
else if(pil==3)
hapus_depan();
else if(pil==4)
hapus_belakang();
else if(pil==5)
tampil();
else
cout<<"selesai";
}
void buat_baru()
{
baru = new(node);
cout<<"input nama : ";cin>>baru->nama;
cout<<"input umur : ";cin>>baru->umur;
cout<<"input tinggi : ";cin>>baru->tinggi;
baru->prev=NULL;
baru->next=NULL;
}
void tambah_belakang()
{
buat_baru();
if(head==NULL)
{
head=baru;
tail=baru;
}
else
{
tail->next=baru;
baru->prev=tail;
tail=baru;
}
cout<<endl<<endl;
tampil();
}
void tambah_depan()
{
buat_baru();
if(head==NULL)
{
head=baru;
tail=baru;
}
else
{
baru->next=head;
head->prev=baru;
head=baru;
}
cout<<endl<<endl;
tampil();
}
void hapus_depan()
{
if (head==NULL)
cout<<"Kosong";
else if (head->next==NULL)
{
hapus=head;
head=NULL;
tail=NULL;
delete hapus;
}
else
{
hapus=head;
head=hapus->next;
head->prev=NULL;
delete hapus;
}
cout<<endl<<endl;
tampil();
}
void hapus_belakang()
{
if (head==NULL)
cout<<"Kosong";
else if (head->next==NULL)
{
hapus=head;
head=NULL;
tail=NULL;
delete hapus;
}
else
{
hapus=tail;
tail=hapus->prev;
tail->next=NULL;
delete hapus;
}
cout<<endl<<endl;
tampil();
}
void tampil()
{
if (head==NULL)
cout<<"Kosong";
else
{
bantu=head;
while(bantu!=NULL)
{
cout<<" nama : "<<bantu->nama;
cout<<" umur : "<<bantu->umur;
cout<<" tinggi : "<<bantu->tinggi<<endl;
bantu=bantu->next;
}
}
getch(); }
BUBBLE SORT
Latihan 1 :
#include <stdio.h>
//inisialisasi array angka sebanyak 15 data
int angka[]={7,7,4,6,8,2,5,9,4,5,3,1,1,7,8};
//fungsi bubble sort ascending
void bubbleSortAsc(){
//mengulang sebanyak 14 kali sebanyak n-1 data
for(int i=0; i<15-1; i++){
for(int j=0; j<15-1; j++){
//jika angka index x+1 lebih kecil dari angka index x
if(angka[j+1]<angka[j]){
//tampung angka index x ke temp
int temp=angka[j];
//ubah angka index x menjadi angka index x+1
angka[j]=angka[j+1];
//ubah angka index x+1 menjadi angka temp
angka[j+1]=temp;
}
}
}
}
void bubbleSortDesc(){
//mengulang sebanyak 14 kali sebanyak n-1 data
for(int i=0; i<15-1; i++){
for(int j=0; j<15-1; j++){
//jika angka index x+1 lebih besar dari angka index x
if(angka[j+1]>angka[j]){
//tampung angka index x ke temp
int temp=angka[j];
//ubah angka index x menjadi angka index x+1
angka[j]=angka[j+1];
//ubah angka index x+1 menjadi angka temp
angka[j+1]=temp;
}
}
}
}
int main(){
printf("Sebelum Sorting : \n");
for(int i=0; i<15; i++){
printf("%d ", angka[i]);
}
bubbleSortAsc();
printf("\n\nSetelah Sorting Ascending : \n");
for(int i=0; i<15; i++){
printf("%d ", angka[i]);
}
bubbleSortDesc();
printf("\n\nSetelah Sorting Descending : \n");
for(int i=0; i<15; i++){
printf("%d ", angka[i]);
}
getchar();
return 0;
}
Simpan source code dengan nama file bubblesort.c, tetapi sesuaikan aja dengan nama file yang
dinginkan dan jangan lupa harus berektensi .c
PENJELASAN :
Penjelasan source algoritma bubble sort di bahasa C setiap barisnya :
baris 3 : mendeklarasikan fungsi void bubbleSort dengan menerima inputan arr dan n
yang bertipe integer.
baris 4 : mendeklarasikan variable i dan j untuk perulangan dan tmp untuk variable
penukaran sementara.
baris 5-6 : melakukakan perulangan sebanyak n dan perulangan sebanyak nilai variable n
dikurang i dan dikurang satu.
baris 7-11 : cek kondisi jika nilai variable arr pada index ke j lebih besar dari nilai varible
arr pada index ke j+1 maka melakukan penukaran nilai variable
baris 17 : mendeklarasi variable array, n, i dan j bertipe integer.
baris 18-19 : melakukan input nilai dari user untuk variable n yang digunakan sebagai
jumlah data.
baris 21-25 : melakukan input nilai dari user untuk variable array dari setiap data.
baris 27 : memanggil fungsi bubbleSort dengan memasukkan variable array dan n.
baris 29-33 : menampilkan hasil pengurutan bubbleSort.
Latihan 3 :
Berikut adalah notasi algortima bubble sort.
#include <stdio.h>
#include <stdlib.h>
//deklarasi fungsi
void input(int data[], int jumlah);
void output(int data[], int jumlah);
void bubble(int data[], int jumlah);
int main()
{
printf("Sorting Ascending\n");
int data[50];
int jml;
puts("");
return 0;
}
//prosedur input
void input(int data[], int jumlah)
{
int i;
i=0;
while(i<jumlah){
printf("data [%d]= ",i+1);
scanf("%d",&data[i]);
i=i+1;
}
}
//prosedur output
void output(int data[], int jumlah)
{
int i=0;
while(i<jumlah){
printf("%d ", data[i]);
i=i+1;
}
}
//prosedur bubble
void bubble(int data[], int jumlah)
{
int i,j,temp=0;
i=0;
while(i<jumlah-1){
j=0;
while(j<jumlah-i-1){
if(data[j+1]<data[j]){
temp=data[j+1];
data[j+1]=data[j];
data[j]=temp;
}
j=j+1;
}
i=i+1;
}
}
Soal :
Buatlah program yang menghasilkan seperti gambit ini :
Ket : tahapan ini hanya gambaran secara logika, yang harus tampil di layar adalah data
sebelum terurut dan yang sesudah