Anda di halaman 1dari 18

TUGAS PRAKTIKUM STRUKTUR DATA

SEARCHING

Disusun oleh :

Nama : Jonas Kuntoro


NIM : 1908561069
Kelas/Kelompok :D

Dosen Pengampu :

Ida Bagus Made Mahendra, S.Kom, M.Kom

PROGRAM STUDI INFORMATIKA


FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS UDAYANA
2020
ISI
Soal
1. Buatlah fungsi algoritma pencarian berurutan dengan menggunakan
struktur data single linked list. Sebutkan keuntungan dari penggunaan
struktur data single linked list ini dibandingkan dengan menggunakan
array
2. Buatlah fungsi untuk menyisipkan (insert) data pada algoritma pencarian
berurutan apabila data tersebut tidak ditemukan. Data baru diletakkan pada
posisi terakhir. Implementasikan fungsi ini dengan menggunakan struktur
data array dan single linked list.
3. Buatlah fungsi algoritma pencarian biner dengan menggunakan struktur
data single linked list
4. Buatlah fungsi untuk menyisipkan (insert) data pada algoritma pencarian
biner apabila data tersebut tidak ditemukan. Data baru disisipkan pada
posisi yang tepat sehingga kumpulan data tersebut tetap terurut.
Implementasikan fungsi ini dengan menggunakan struktur data array dan
single linked list.
Jawab
1. Fungsi Pencarian Beruntun dengan Linked List
#include <stdio.h>
#include <stdlib.h>
struct a{
int n;
struct a *next;
}*h;
Penggunaan pustaka stdlib untuk melakukan perintah malloc yang
digunakan untuk mengisi data dalamm linked list atau membuat memori
dinamis. Setelah itu, terdapat pendefinisian struct a yang akan berisi nilai n
dan sebuah pointer next. Pointer next ini nantinya akan menunjuk ke struct
sebelah kanannya yang akhirnya dinamakan sebagai singly linked list.
Variabel pointer h akan menjadi head dari linked list atau pemegang
alamat terdepan linked list.
int search(struct a *b, int m){
while(b->next != NULL){
if(b->n==m){
return 1;
}
b=b->next;
}
return 0;
}

Fungsi search adalah fungsi bertipe int yang artinya mengembalikan nilai
berupa integer. Fungsi ini menerima input berupa alamat struct head dari
sebuah linked list dan sebuah variable m yaitu variabel yang berisi data
yang dicari. Fungsi ini adalah fungsi pencarian beruntun. Fungsi ini
berkerja dengan melakukan perulangan dari alamat head sebuah linked list
menuju setiap pointer next dari linked list hingga pointer next tersebut
berisi NULL. Dalam perulangan ini, data akan dicocokan. Jika sama, maka
akan dijalankan perintah return yang mengembalikan nilai 1, sebaliknya
jika tidak atau dalam artian data tidak ketemu maka tidak ada perintah dala
if yang dijalankan Perintah yang dijalankan di akhir adalah return 0
sebagai tanda data tidak ditemukan. Jadi keluaran dari fungsi ini antara 0
dan 1.

int main(){
//pendefinisian single linked list
printf("Jonas Kuntoro || D || 1908561069\n\n");
struct a *satu=(struct a*)malloc(sizeof(struct a)); satu->n=2;
struct a *dua=(struct a*)malloc(sizeof(struct a)); dua->n=3;
struct a *tiga=(struct a*)malloc(sizeof(struct a)); tiga->n=5;
struct a *empat=(struct a*)malloc(sizeof(struct a)); empat->n=7;
struct a *lima=(struct a*)malloc(sizeof(struct a)); lima->n=11;
h=satu;
h->next=dua;
h->next->next=tiga;
h->next->next->next=empat;
h->next->next->next->next=lima;
h->next->next->next->next->next=NULL;
//pendefinisian single linked list
printf("Data 7 : %d\n", search(h,7));
printf("Data 8 : %d\n", search(h,8));
printf("Data 11 : %d\n", search(h,11));
}

Fungsi main adalah fungsi utama. Pada fungsi ini dilakukan pengalokasian
memori dinamis dengan cara pembuatan blok memori dengan malloc. Kemudian
setiap blok memori itu akan diisikan nilai integer. Kemudian, setelah itu akan
dilakukan penyalinan alamat alokasi pertama (satu) ke h (head dari linked list),
kemudian akan dilakukan penyalinan alamat alokasi kedua (dua) ke h->next
(pointer selanjutnya dari head), dan seterusnya hingga akhirnya pointer
next terkahir berisikan NULL (untuk mencegah kebocoran memori /
penunjukan data yang tidak benar). Yang terkahir, pemanggilan fungsi
search, yang akan menampilkan hasil 1 jika data ada dan hasil 0 jika data
tidak ada. Data yang ada adalah 2, 3, 5, 7, 11. Pencarian data dengan 8
akan menampilkan hasil 0. Hal ini sesuai dengan tangkapan layar.
Keuntungan pencarian beruntun dengan linked list dibandingkan dengan
array adalah tidak memerlukan penanda nomor indeks karena dalam linked
list iterasi dilakukan dengan membandingkan pointer hingga muncul
NULL.

2. Fungsi Menyisipkan Data Pencarian Beruntun Linked List


#include <stdio.h>
#include <stdlib.h>
struct a{
int n;
struct a *next;
}*h;

Penggunaan pustaka stdlib untuk melakukan perintah malloc yang


digunakan untuk mengisi data dalamm linked list atau membuat memori
dinamis. Setelah itu, terdapat pendefinisian struct a yang akan berisi nilai n
dan sebuah pointer next. Pointer next ini nantinya akan menunjuk ke struct
sebelah kanannya yang akhirnya dinamakan sebagai singly linked list.
Variabel pointer h akan menjadi head dari linked list atau pemegang
alamat terdepan linked list.
int search(struct a *b, int m){
while(b->next != NULL){
if(b->n==m){
return 1;
}
b=b->next;
}
b->next=(struct a*)malloc(sizeof(struct a));
b->next->n=m;
b->next->next=NULL;
return 0;
}

Pada bagian kode ini, sebenarnya sama dengan nomor satu, hanya
ditambahkan perintah saat data tidak ada. Perintah tersebut adalah
mengalokasikan memori dengan malloc yang alamat hasil alokasi akan
disimpan di b->next. Hal ini dikarenakan b memegang alamat paling akhir
sebelum NULL akibat pencarian data yang tidak ditemukan. Setelah itu,
data pada b->next akan diisi dengan m. Setelah itu dilakukan pengisian
nilai NULL pada pointer next dari b->next. Setelah itu, tetap akan
dikembalikan nilai 0, walaupun data sudah terisi. Itulah cara penyisipan
data pada akhir/ujung kanan linked list.
void tampolData(struct a *tampol){
printf("Data dalam linked list : ");
while(tampol){
printf("%d\t", tampol->n);
tampol=tampol->next;
}
printf("\n");
}

Fungsi tampolData adalah fungsi untuk menampilkan data. Fungsi ini


memiliki parameter berupa nilai alamat dari head yang disimpan dalam
struct bernama tampol. Untuk proses yang terjadi adalah melakukan iterasi
hingga alamat struct dengan nama tampol bernilai NULL yang artinya
melakukan iterasi dari kiri menuju ujung kanan linked list. Dalam iterasi
ini, akan dicetak nilai data pada struct tampol.
int searchArrayku(int arraylah[], int datakuy, int *jumlahkuy){
for(int i=0; i<*jumlahkuy; i++){
if(arraylah[i]==datakuy){
return 1;
}
}
arraylah[*jumlahkuy] = datakuy;
*jumlahkuy=*jumlahkuy+1;
return 0;
}

Fungsi serachArrayku adalah fungsi pencarian beruntun yang diterapkan


pada struktur data array. Fungsi ini telah dimodifikasi agar bisa
menyisipkan data di akhir array. Fungsi ini bertipe integer dengan
memiliki parameter berupa alamat array, nilai data yang dicari, niali
jumlah data dalam bentuk alamat variabel. Fungsi ini melakukan iterasi
dari 0 hingga jumlahkuy-1. Dalam iterasi itu, dilakukan perbandingan nilai
data, jika benilai benar dalam artian data ditemukan, akan dilakukan
perintah return 1 yang mengembalikan nilai 1. Jika tidak ditemukan
pencarian terus berlanjut hingga akhir array, tetapi return 1 tidak
dijalankan. Kemudian, akan ditambahkan data pada akhir array dengan
perintah arraylah[*jumlahkuy]=datakuy kemudian nilai jumlahkuy akan
ditambah 1 yang artinya jumlah data dalam array bertambah. Setelah itu
dikembalikan nilai 0.
void tampolDataArray(int arrayku[], int jumlahkuy){
printf("Data dalam array : ");
for(int z=0; z<jumlahkuy; z++){
printf("%d\t", arrayku[z]);
}
printf("\n");
}
Fungsi ini adalah fungsi untuk menampilkan array dengan parameter
adalah alamat array dan jumlah data dalam array. Fungsi ini melakukan
iterasi dari 0 hingga jumlahkuy-1.
int main(){
//pendefinisian single linked list
int arrayku[100];
arrayku[0]=2; arrayku[1]=3; arrayku[2]=5; arrayku[3]=7;
arrayku[4]=11;
int narrayku=5;

Pada int main, terjadi penciptaan array menampung maksimal 100 integer.
Kemudian dialkukan pengisian data dari indeks 0 hingga indeks 4.
Kemudian narrayku yaitu variabel yang memegang jumlah data diisikan
nilai 5. Jadi, data yang ada dalam array adalah 2,3,5,7,11.
printf("Jonas Kuntoro || D || 1908561069\n\n");
printf("\nBAGIAN INI KHUSUS UNTUK SINGLE LINKED
LIST !\n");
struct a *satu=(struct a*)malloc(sizeof(struct a)); satu->n=2;
struct a *dua=(struct a*)malloc(sizeof(struct a)); dua->n=3;
struct a *tiga=(struct a*)malloc(sizeof(struct a)); tiga->n=5;
struct a *empat=(struct a*)malloc(sizeof(struct a)); empat->n=7;
struct a *lima=(struct a*)malloc(sizeof(struct a)); lima->n=11;
h=satu;
h->next=dua;
h->next->next=tiga;
h->next->next->next=empat;
h->next->next->next->next=lima;
h->next->next->next->next->next=NULL;
//pendefinisian single linked list
tampolData(h);
printf("Data 7 : %d\n", search(h,7));
printf("Data 8 : %d\n", search(h,8));
printf("Data 12 : %d\n", search(h,12));
tampolData(h);
printf("\n\nBAGIAN INI KHUSUS UNTUK ARRAY !\n");
tampolDataArray(arrayku,narrayku);
printf("Data 7 : %d\n", searchArrayku(arrayku,7,&narrayku));
printf("Data 8 : %d\n", searchArrayku(arrayku,8,&narrayku));
printf("Data 12 : %d\n", searchArrayku(arrayku,12,&narrayku));
tampolDataArray(arrayku,narrayku);
}

Penjelasan pendefinisian linked list masih sama dengan soal nomor satu.
Untuk membandingkan hasil data yang suddah dilakukan penyisipan,
dipanggil fungsi tampolData untuk linked list dan tampolDataArray untuk
array sehingga dapat terlihat nilai-nilai data yang ada. Hasilnya ditunjukan
di tangkapan layar.

3. Program Binary Search di Linked List

#include <stdio.h>
#include <stdlib.h>
struct a{
int n;
struct a *next;
}*h;

Pada awal program, dilakukan pemanggilan pustaka stdio.h untuk


keperluan input output dan stdlib.h untuk keperluan alokasi memori secara
dinamis. Setelah itu, dilakukan pendeklarasian struct a yang nantinya
akann digunakan untuk membuat linked list. Variabel pointer h akan
menjadi head dari linked list.
struct a *kembalikanAlamat(struct a *bantu, int nomor){
for(int i=0; i<nomor; i++){
bantu=bantu->next;
}
return bantu;
};

Fungsi bertipe struct a bernama kembalikanAlamat adalah fungsi yang


menerima parameter berupa alamat struct a yang diharapkan berisi alamat
head dari linked list dan nomor yang berisi indeks ke berapa. Fungsi ini
berguna untuk mengembalikan nilai alamat dari linked list sesuai indeks
nomor. Misalnya diberikan nomor 5, maka alamat yang dikembalikan
adalah alamat struct ke lima dari linked list yang dihitung dari kiri. Hal ini
akan mirip dengan fungsi indeks pada array. Cara kerja fungsi ini hanyalah
melakukan iterasi hingga lima kali.

int kembalikanJumlah(struct a *bantu){


int jum=0;
while(bantu){
jum++;
bantu=bantu->next;
}
return jum;
}

Fungsi kembalikanJumlah adalah fungsi yang berguna untuk


mengembalikan jumlah total struct yang ada pada linked list. Fungsi ini
memiliki parameter head dari linked list. Fungsi ini berkerja dengan cara
melakukan iterasi linked list dari kiri menuju kanan dengan melewati
setiap pointer next yang ada. Saat itu terjadi variabel jum akan terus
bertambah. Setelah itu dikembalikan variabel jum.
int bagiDuaYes(int data, struct a *bantukuy){
struct a *help;
int l=0;
int r=kembalikanJumlah(bantukuy);
int ketemu=0;
int m=(l+r)/2;
while(l<=r && !ketemu){
m=(l+r)/2;
help=kembalikanAlamat(bantukuy,m);
if(data>help->n){
l=m+1;
}
if(data==help->n){
ketemu=1;
return 1;
}
if(data<help->n){
r=m-1;
}
}
return 0;
}
Fungsi bagiDuaYes adalah fungsi untuk melakukan pencarian biner dalam
single linked list. Fungsi ini bekerja sama dengan algoritma pencarian
biner dalam array. Bedanya, fungsi ini dibantu oleh kembalikanJumlah
yang akan memberikan data panjang linked list dan kembalikanAlamat
yang akan memberikan alamat dari struct bernomor tertentu (sebagai
indeks). Fungsi ini menerima parameter berupa data yang dicari dan
alamat head dari linked list. Fungsi ini pada bagian awal mendeklarasikan
struct a help, l yang berisi nilai 0, r yang berisi nilai panjang linked list,
ketemu yang berisi nilai 0, dan m yang berisi nilai tengah dari l ditambah r.
Kemudian, fungsi ini akan melakukan perulangan dengan kondisi l <= r
dan tidak ketemu. Dalam perulangan ini akan dimasukan nilai m dari l
ditambah r, bagi dua, pemasukan alamat ke help dengan indeks ke-m dari
linked list. Alamat yang diberikan ini yang nantinya akan bisa mengakses
data yang akan dibandingkan. Selanjutnya dibuatkan tiga kondisi
perbandingan. Kondisi pertama, saat data lebih besar daripada data di
alamat indeks ke-m (selanjutnya kita sebut help), maka l akan berubah
nilainya menjadi m+1. Kondisi kedua saat data ditemukan yaitu data pada
help sama dengan data yang dicari maka ketemu akan bernilai 1 dan akan
dijalankan perintah return 1 yang langsung mengembalikan nilai 1.
Kondisi ketiga saat data lebih kecil daripada data help, maka r=m-1. Jika
memang iterasi terus dilakuakan dan data masih belum ditemukan maka
kondisi l=r akan terjadi dan menghentikan iterasi. Selanjutnya yang
dijalankan adalah return 0.
int main(){
//pendefinisian single linked list
printf("Jonas Kuntoro || D || 1908561069\n\n");
struct a *satu=(struct a*)malloc(sizeof(struct a)); satu->n=2;
struct a *dua=(struct a*)malloc(sizeof(struct a)); dua->n=3;
struct a *tiga=(struct a*)malloc(sizeof(struct a)); tiga->n=5;
struct a *empat=(struct a*)malloc(sizeof(struct a)); empat->n=7;
struct a *lima=(struct a*)malloc(sizeof(struct a)); lima->n=11;
h=satu;
h->next=dua;
h->next->next=tiga;
h->next->next->next=empat;
h->next->next->next->next=lima;
h->next->next->next->next->next=NULL;
//pendefinisian single linked list
printf("Data 2 : %d\n", bagiDuaYes(2,h));
printf("Data 5 : %d\n", bagiDuaYes(5,h));
printf("Data 6 : %d\n", bagiDuaYes(6,h));
printf("Data 7 : %d\n", bagiDuaYes(7,h));
printf("Data 8 : %d\n", bagiDuaYes(8,h));
printf("Data 11 : %d\n", bagiDuaYes(11,h));
}
Pembutan linked list pada jawaban nomor 3 ini masih sama penjelasannya
dengan jawaban soal nomor 1. Data yang dimasukan disini harus data yang
sudah diurut dan data yang dicoba disini adalah 2,3,5,7,11 (urut naik).
Untuk melakukan pencarian data, dipanggil fungsi bagiDuaYes yang akan
memberikan nilai 1 jika data ada dan 0 jika data tidak ada. Hasil yang
ditunjukan dalam tangkapan layar adalah benar untuk percobaan-
percobaan pencarian data di atas.
4. Penyisipan Data pada Linked List

Progam ini bertujuan untuk melakukan pencarian biner dengan linked list
dan array. Jika data dalam biner tidak ditemukan, maka data tersebut akan
disisipkan sesuai dengan urutan data. Data dalam pencarian biner harus
terurut (merupakan syarat dari pencarian biner).
#include <stdio.h>
#include <stdlib.h>
struct a{
int n;
struct a *next;
}*h;
Program dilengkapi dengan pustaka stdio.h untuk input output dan stdlib
untuk melakukan alokasi memori dinamis. Dalam program juga dibuatkan
struct untuk keperluan linked list dengan h sebagai head linked list. Struct
yang dibuat, penjelasannya masih sama dengan nomor-nomor sebelumnya.
struct a *kembalikanAlamat(struct a *bantu, int nomor){
for(int i=0; i<nomor; i++){
bantu=bantu->next;
}
return bantu;
};

Fungsi bertipe struct a bernama kembalikanAlamat adalah fungsi yang


menerima parameter berupa alamat struct a yang diharapkan berisi alamat
head dari linked list dan nomor yang berisi indeks ke berapa. Fungsi ini
berguna untuk mengembalikan nilai alamat dari linked list sesuai indeks
nomor. Misalnya diberikan nomor 5, maka alamat yang dikembalikan
adalah alamat struct ke lima dari linked list yang dihitung dari kiri. Hal ini
akan mirip dengan fungsi indeks pada array. Cara kerja fungsi ini hanyalah
melakukan iterasi hingga lima kali.
void tampolData(struct a *tampol){
printf("Data dalam linked list : ");
while(tampol){
printf("%d\t", tampol->n);
tampol=tampol->next;
}
printf("\n");

Fungsi tampolData bertipe void adalah fungsi yang digunakan untuk


menampilkan data dalam linked list. Fungsi ini melakukan iterasi hingga
akhir linked list yang dtandai dengan NULL.
int kembalikanJumlah(struct a *bantu){
int jum=0;
while(bantu){
jum++;
bantu=bantu->next;
}
return jum;
}

Fungsi kembalikanJumlah adalah fungsi yang berguna untuk


mengembalikan jumlah total struct yang ada pada linked list. Fungsi ini
memiliki parameter head dari linked list. Fungsi ini berkerja dengan cara
melakukan iterasi linked list dari kiri menuju kanan dengan melewati setiap
pointer next yang ada. Saat itu terjadi variabel jum akan terus bertambah.
Setelah itu dikembalikan variabel jum.
void insertDataYuk(int data, struct a *bantukyak){
struct a *help;
if(bantukyak->n>data){
help=(struct a*)malloc(sizeof(struct a));
help->n=data;
help->next=bantukyak;
h=help;
}
else{
while(bantukyak->next!=NULL){
if(bantukyak->n<data){
if(bantukyak->next->n>data){
help=bantukyak->next;
bantukyak->next=(struct a*)malloc(sizeof(struct a));
bantukyak->next->n=data;
bantukyak->next->next=help;
}
}
bantukyak=bantukyak->next;
}
}
}

Fungsi insertDataYuk adalah fungsi bertipe void yang digunakan untuk


memasukan data ke dalam linked list. Fungsi ini berparameter variabel data
yang dicari dan alamat struct head dari linked list. Struct help dibuat dalam
fungsi ini untuk membantu mengalokasikan memori. Cara kerja fungsi ini
adalah pada kondisi if pertama data dicek, jika data pas di paling kiri linked
list, maka kondisi ini bernilai benar dan dilakukan alokasi memori dengan
bantuan struct help. Kemudian linked list akan ditambahkan struct ini di
bagian depan dan head dari linked list akan menunjuk bagian ini. Jika data
tidak cocok di paling kiri, maka data cocok di tengah linked list atau ujung
kanan. Pemasukan daat ini akan dibantu dengan perulangan while yang
melakukan iterasi hingga linked list bernilai NULL. Dalam perulangan ini
data akan dicocokkan dengan struct kanan data dan kiri data, sehingga
didapatkan tempat yang pas.
int bagiDuaYes(int data, struct a *bantukuy){
struct a *help;
int l=0;
int r=kembalikanJumlah(bantukuy);
int ketemu=0;
int m=(l+r)/2;
while(l<=r && !ketemu){
m=(l+r)/2;
help=kembalikanAlamat(bantukuy,m);
if(data>help->n){
l=m+1;
}
if(data==help->n){
ketemu=1;
return 1;
}
if(data<help->n){
r=m-1;
}
}
insertDataYuk(data,bantukuy);
return 0;
}

Fungsi ini adalah fungsi pencarian biner untuk linked list. Penjelasannya
masih sama dengan nomor 3. Akan tetapi, ditambahkan fungsi
insertDataYuk di bagian sebelum return 0 yang digunakan untuk melakukan
sisip data jika data ditemukan.
void tampolDataArray(int arrayku[], int jumlahkuy){
printf("Data dalam array : ");
for(int z=0; z<jumlahkuy; z++){
printf("%d\t", arrayku[z]);
}
printf("\n");
}

Fungsi tampolDataArray adalah fungsi untuk menampilkan data dalam


array. Fungsi ini bertipe void yang akan melakukan perulangan dan
menampilkan data di setiap indeks.
void insArr(int data, int indeks, int arr[], int *jumlahkuy){
int i;
int temp;
if(data<arr[indeks]){
i=indeks;
}
if(data>arr[indeks]){
i=indeks+1;
}
int temp1=arr[i];
arr[i]=data;
while(arr[i]){
temp=arr[i+1];
arr[i+1]=temp1;
temp1=temp;
i++;
}
(*jumlahkuy)++;
}

Fungsi insArr adalah fungsi bertipe void yang digunakan untuk melakukan
sisip data pada array. Fungsi ini memiliki parameter berupa data, indeks
akhir pencarian, array, dan jumlah data di array. Fungsi ini bekerja dengan
cara membandingkan indeks data untuk mencari tempat yang tepat. Saat
sudah ketemu, maka akan dilakukan perulangan untuk memindahkan data
satu per satu ke kanan. Hal ini mirip dengan proses Queue.
int searchArrayku(int arraylah[], int datakuy, int *jumlahkuy){
int l=0;
int r=*jumlahkuy-1;
int ketemu=0;
int m;
while((l<=r)&&(!ketemu)){
m=(l+r)/2;
if(datakuy>arraylah[m])
l=m+1;
if(datakuy==arraylah[m])
ketemu=1;
if(datakuy<arraylah[m])
r=m-1;
}
if(ketemu==0){
insArr(datakuy,m,arraylah,jumlahkuy);
}
return ketemu;
}

Funsgi searchArrayku adalah fungsi yang digunakan untuk mencari data


secara biner kemudian menyipkan data jika data tidak ditemukan. Fungsi ini
bertipe integer yang menerima parameter berupa array, data, jumlah data
dalam array. Fungsi ini bekerja dengan cara membagi range data menjadi
lebih kecil. Saat data tidak ditemukan ditandai dengan ketemu yang masih 0
saat perulangan selesai, maka akan dipanggil fungsi insArr.
int main(){
//pendefinisian single linked list
printf("Jonas Kuntoro || D || 1908561069\n\n");
printf("\nBAGIAN INI KHUSUS UNTUK SINGLE LINKED LIST !\n");
struct a *satu=(struct a*)malloc(sizeof(struct a)); satu->n=2;
struct a *dua=(struct a*)malloc(sizeof(struct a)); dua->n=3;
struct a *tiga=(struct a*)malloc(sizeof(struct a)); tiga->n=5;
struct a *empat=(struct a*)malloc(sizeof(struct a)); empat->n=7;
struct a *lima=(struct a*)malloc(sizeof(struct a)); lima->n=11;
h=satu;
h->next=dua;
h->next->next=tiga;
h->next->next->next=empat;
h->next->next->next->next=lima;
h->next->next->next->next->next=NULL;
//pendefinisian single linked list
tampolData(h);
printf("Data 1 : %d\n", bagiDuaYes(1,h));
printf("Data 2 : %d\n", bagiDuaYes(2,h));
printf("Data 6 : %d\n", bagiDuaYes(6,h));
printf("Data 7 : %d\n", bagiDuaYes(7,h));
printf("Data 8 : %d\n", bagiDuaYes(10,h));
tampolData(h);

Pembutan linked list pada jawaban nomor 4 ini masih sama penjelasannya
dengan jawaban soal nomor 1. Data yang dimasukan disini harus data yang
sudah diurut dan data yang dicoba disini adalah 2,3,5,7,11 (urut naik). Untuk
melakukan pencarian data, dipanggil fungsi bagiDuaYes yang akan
memberikan nilai 1 jika data ada dan 0 jika data tidak ada. Jika bernilai 0,
maka data akann langsung disisipkan dalam linked list. Jika dilihat dari
tangkapan layar, maka program ini berhasil menyisipkan data sesuai urutan
printf("\nBAGIAN INI KHUSUS UNTUK ARRAY !\n");
int arrayku[100];
arrayku[0]=2; arrayku[1]=3; arrayku[2]=5; arrayku[3]=7; arrayku[4]=11;
int narrayku=5;
tampolDataArray(arrayku,narrayku);
printf("Data 1 : %d\n", searchArrayku(arrayku,1,&narrayku));
printf("Data 2 : %d\n", searchArrayku(arrayku,2,&narrayku));
printf("Data 6 : %d\n", searchArrayku(arrayku,6,&narrayku));
printf("Data 7 : %d\n", searchArrayku(arrayku,7,&narrayku));
printf("Data 8 : %d\n", searchArrayku(arrayku,8,&narrayku));
tampolDataArray(arrayku,narrayku);
}

Kode ini merupakan kode untuk membuat array dan memasukan data array
berupa 2,3,5,7,11. Kemudian akan ditampilkan data tersebut dengan
menggunakan fungsi tampolDataArray. Setelah itu akan dilakukan pencarian
dengan fungsi searchArrayku. Jika fungsi ini bernilai 0, maka data akan
langsung disisipkan. Jika dilihat dari hasil tangkapan layar. Data diletakkan
dengan benar.

Anda mungkin juga menyukai