P. 1
Struktur Data

Struktur Data

|Views: 26|Likes:
Dipublikasikan oleh Miftah Aris Setiawan

More info:

Published by: Miftah Aris Setiawan on Jun 19, 2013
Hak Cipta:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

03/10/2014

pdf

text

original

Sections

  • PERTEMUAN VIII
  • PERTEMUAN IX
  • PERTEMUAN X
  • PERTEMUAN XI
  • PERTEMUAN XII
  • PERTEMUAN XIII
  • PERTEMUAN XIV

PERTEMUAN VIII QUEUE (ANTRIAN

)

Definisi Struktur data antrean atau queue adalah suatu bentuk khusus dari linear list, dengan operasi penyisipan (insertion) hanya diperbolehkan pada salah satu sisi, yang disebut sisi belakang (REAR), dan operasi penghapusan (deletion) hanya diperbolehkan pada sisi lainnya, yang disebut sisi depan (FRONT), dari list. Jika diartikan secara harafiah, queue berarti antrian, queue merupakan salah satu contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam kehiduypan sehari-hari, misalnya saat Anda mengantri di loket untuk membeli tiket. Istilah yang cukup sering dipakai seseorang masuk dalam sebuah antrian adalah enqueue. Dalam suatu antrian, yang dating terlebih dahulu akan dilayani lebih dahulu. Istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue. Walaupun berbeda implementasi, struktur data queue setidaknya harus memiliki operasi-operasi sebagai berikut : EnQueue Memasukkan data ke dalam antrian DeQueue Mengeluarkan data terdepan dari antrian Clear Menghapus seluruh antrian IsEmpty Memeriksa apakah antrian kosong IsFull Memeriksa apakah antrian penuh

Queue menggunakan array 1D: 1. Linear Queue (Antrian Lurus) 2. Circular Queue (Antrian Melingkar) 3. Double Ended Queue/Deque (Antrian dengan ujung ganda)

Ilustrasi Misal n= 10

F (Front) : menunjuk pengantri paling depan/siap untuk keluar/ siap untuk dilayani

R (Rear) : menunjuk pengantri paling belakang/paling akhir masuk R = 6, artinya :  Pernah masuk 7 pengantri dengan urutan masuk Q[0], Q[1], Q[2], Q[3], Q[4], Q[5], Q[6] F = 3, artinya :  • Prinsip FIFO (First In First Out) atau FIFS (First In First Serve) • Proses o AWAL (Inisialisasi) o INSERT (Sisip, Masuk, Simpan, Tulis) o DELETE (Hapus, Keluar, Ambil, Dilayani) o RESET (Kembali ke keadaan awal) Sudah keluar sebanyak 3 pengantri dengan urutan keluar Q[0], Q[1], Q[2]

SOURCE CODE :
#include <iostream> #include <conio.h> #include <stdlib.h> #define n 10 using namespace std; void INSERT(); void DELETE(); void CETAKLAYAR(); void Inisialisasi(); void RESET(); int PIL,F,R; char PILIHAN[1],HURUF; char Q[n]; void main() { Inisialisasi(); do {

cout<<"ANIMASI QUEUE"<<endl; cout<<"=============="<<endl; cout<<"1. INSERT"<<endl; cout<<"2. DELETE"<<endl; cout<<"3. CETAK"<<endl; cout<<"4. QUIT"<<endl; cout<<"PILIHAN :";cin>>PILIHAN; PIL=atoi(PILIHAN); switch(PIL) { case 1: INSERT(); break; case 2: DELETE(); break; case 3: CETAKLAYAR(); break; default: cout<<"TERIMA KASIH"<<endl; break; } cout<<"Press any key to continue"<<endl; getch(); system("cls"); } while(PIL<4); } void INSERT() { if(R<n-1) { cout<<endl<<"MASUKKAN 1 HURUF :"; cin>>HURUF; Q[++R]=HURUF; } else cout<<"Antrian Penuh"<<endl; } void CETAKLAYAR() { if(F<R+1) { for(int i=F;i<=R;i++) cout<<"Q["<<i<<"]="<<Q[i]<<endl; } else cout<<"QUEUE Kosong"<<endl; } void DELETE()

{ if(F<=R+1) { HURUF=Q[F]; Q[F++]='\0'; cout<<"Data yang diambil :"<<HURUF<<endl; if(F==n) RESET(); } else cout<<"Antrian Kosong"<<endl; } void Inisialisasi() { F=0; R=-1; } void RESET() { F=0; R=-1; }

.

OUTPUT : .

Kesimpulan : Antrean dikatakan beroperasi dalam cara FIRST-IN-FIRST-OUT (FIFO). Disebut demikian karena elemen yang pertama masuk merupakan elemen yang pertama ke luar. .

tapi dengan memanfaatkan tempat yang ditinggalkan oleh pengantri yang keluar. • Representasi Misal n= 10 atau . yang berarti bahwa Anda tidak perlu khawatir tentang interrupt handler mencoba untuk melakukan penyisipan suatu pada saat yang sama sebagai kode utama Anda adalah melakukan penghapusan. Untuk menghindari pemborosan waktu. antrian dapat dilanjutkan ke Q[0].PERTEMUAN IX CIRCULAR QUEUE (ANTRIAN MELINGKAR) • Definisi Sebuah antrian melingkar adalah implementasi khusus dari antrian. dan seterusnya. Jadi hila antrian sudah sampai pada lokasi terkahir yaitu Q[n-1]. maka Linier Queue dengan konsep penggeseran dirubah menjadi Circular Queue (Antrian Melingkar). Hal ini sangat efisien. tanpa melakukan penggeseran. karena penyisipan dan penghapusan sepenuhnya independen. Hal ini juga sangat berguna dalam kode tingkat rendah.

char Q[n].h> #define n 10 using namespace std.F. void main() { Inisialisasi(). int PIL. cout<<"=========================="<<endl. Ambil. char PILIHAN[1]. • Prinsip FIFO (First In First Out) • Proses o AWAL (Inisialisasi) o INSERT (Sisip. maka tidak direset tetapi melingkar ke 0. Simpan.R.HURUF. void CETAKANTRIANMELINGKAR(). Keluar. void INSERT().h> #include<stdlib. void DELETE(). F tidak selalu <= R Setelah R dan F sampai ke n-1. . void Inisialisasi(). Dilayani) SOURCE CODE : #include<iostream> #include<conio.Counter : Jumlah pengantri yang ada dalam antrian Pendefinisian : #define n 10 int Q[n]. void RESET(). do { cout<<"ANIMASI ANTRIAN MELINGKAR"<<endl. Masuk. Tulis) o DELETE (Hapus.

break. cout<<"4. } else cout<<"antrian penuh"<<endl. cout<<"data yang di ambil : "<<HURUF<<endl. PIL=atoi (PILIHAN). cin>>HURUF. cout<<"2. } cout<<"press any key to continue"<<endl. break. case 2: DELETE(). cout<<"3. CETAK ANTRIAN MELINGKAR"<<endl. } else cout<<"antrian kosong"<<endl. Q[++R]=HURUF. switch (PIL) { case 1: INSERT(). INSERT"<<endl. } void CETAKANTRIANMELINGKAR() { if(F<R+1) { for (int i=F. break. case 3: CETAKANTRIANMELINGKAR(). cout<<"PILIHAN : ". cin>>PILIHAN. system("cls"). } while (PIL<4). . DELETE"<<endl.} void INSERT() { if(R<n-1) { cout<<endl<<"MASUKKAN 1 HURUF : ". Q[F++]='\0'. QUIT"<<endl<<endl. } else cout<<"antrian melingkar kosong"<<endl. cout<<"1. if(F==n) RESET().i++) cout<<"Q["<<i<<"] = "<<Q[i]<<endl. getch().i<=R. } void DELETE() { if(F<=R+1) { HURUF=Q[F].

} void RESET() { F=0.} void Inisialisasi() { F=0. R=-1. R=-1. } .

.

OUTPUT : .

antrian dapat dilanjutkan ke Q[0]. dan seterusnya.Kesimpulan : Antrean dikatakan beroperasi dalam cara FIRST-IN-FIRST-OUT (FIFO). Jadi hila antrian sudah sampai pada lokasi terkahir yaitu Q[n-1]. .

.INFO. adalah node terakhir. berisi informasi tentang elemen data yang bersangkutan. Berikut ini sebuah contoh linked list yang terdiri atas 4 node : start info next info next info next info next null node ke-1 node ke-2 node ke-3 node ke-4 Pada node ke-4 field NEXT-nya berisi NULL. Linked list pada contoh diatas dapat pula digambarkan seperti berikut ini : .PERTEMUAN X LINK LIST (INSERT) • Definisi Linked list (one way list) adalah suatu kumpulan elemen data (yang disebut sebagai node) dimana urutannya ditentukan oleh suatu pointer. berisi alamat dari elemen (node) selanjutnya yang dituju. yaitu : . Node-node dalam linked list tidak harus selalu digambarkan paralel seperti pada gambar diatas. Setiap elemen (node) dari suatu linked list terdiri atas dua bagian. artinya node ke-4 tsb.NEXT (link field/next pointer field).

}.h> #include <stdlib. void BUAT_SIMPUL (void). char PILIHAN[1].*FIRST. . int PIL. SIMPUL *P. void INSERT (void). struct SIMPUL{ char NAMA [20]. int NILAI.HURUF.info next info next null info next info next Fungsi insert pada linked list meliputi : o insert sebagai node awal (head) dari linked list o insert setelah node tertentu o insert sebelum node tertentu o insert sebagai node akhir (tail) dari linked list • Proses o Inisialisasi : persiapan pembuatan linked list o Membuat simpul awal o Insert simpul kedalam linked list o Delete simpul dari linked list SOURCE CODE : #include <iostream> #include <conio. char NIM [15]. char GENDER. void FREE_MEMORY(void). void AWAL (void).*Q. void INSERT_KANAN(). void INTI (void).*LAST. void CETAK (void).h> using namespace std. struct SIMPUL *LINK.

INSERT DATA"<<endl. switch (PIL) { case 1: INSERT(). } else { cout<<"Pembuatan Simpulan Gagal"<<endl. if (P!=NULL) { cout<<"Nama :". cout<<"Nim :". } } void INTI (void) { FIRST=NULL. } void BUAT_SIMPUL(void)//buat simpul baru { P=(SIMPUL *)malloc(sizeof(SIMPUL)). cin>>PILIHAN. case 2: CETAK(). default: cout<<"TERIMA KASIH"<<endl. FREE_MEMORY(). cout<<"3. PIL=atoi (PILIHAN). case 3: exit (0). CETAK DATA"<<endl. LAST=P. do { system("cls").cin>>P->NILAI.cin>>P->GENDER. break. break. EXIT"<<endl<<endl. cout<<"PILIHAN(1-3):". cout<<"Gender:". .cin>>P->NAMA. break. cout<<"1. getchar(). cout<<"2.void main (void) { INTI (). cout<<"========================"<<endl.cin>>P->NIM. cout<<"NILAI:". } void AWAL (void) { FIRST=P. } } while (PIL<4). cout<<"LINK SINGLY LINKED LIST"<<endl. LAST=NULL. exit(1).

} void CETAK () { int i=1. P->LINK=NULL. getchar (). Q=Q->LINK. cout<<"Nama :"<<Q->NAMA<<endl. free(FIRST). } } . FIRST=Q. } void INSERT_KANAN (void) { LAST->LINK=P. if (FIRST==NULL) AWAL(). cout<<"NILAI:"<<Q->NILAI<<endl. cout<<"GENDER:"<<Q->GENDER<<endl. cout<<"NIM:"<<Q->NIM<<endl. cout<<endl. } void FREE_MEMORY (void) { while (FIRST!=NULL) { Q=FIRST->LINK. } void INSERT (void) { BUAT_SIMPUL(). while (Q!=NULL) { cout<<"Data ke :"<<i++<<endl. else INSERT_KANAN(). } } else cout<<"Data kosong"<<endl.P->LINK=NULL. LAST=P. if(FIRST!=NULL) { Q=FIRST.

.

.

yaitu : 1. . 2. 2. Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah pointer-nya saja. Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam linked list.Sedangkan keuntungannya adalah : 1. Jenis data yang berbeda dapat di-link.Ada dua hal yang menjadi kerugian dengan representasi suatu data dengan linked list ini. . Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.OUTPUT : Kesimpulan : .

void INSERT(void). struct SIMPUL *LINK. . }. SIMPUL *P.PERTEMUAN XI LINKED LIST (DELETE) • Definisi Sekumpulan elemen bertipe sama. struct SIMPUL{ char NAMA[20].*LAST. char GENDER. void INSERT_KANAN(). char NIM[15].h> #include<stdlib. Penggunaan pointer untuk mengacu elemen berakibat elemen-elemen bersebelahan secara logik walau tidak bersebelahan secara fisik di memori. Struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan elemen lain melalui pointer.*FIRST. Pointer adalah alamat elemen. void BUAT_SIMPUL(void). Fungsi insert pada linked list meliputi : o insert sebagai node awal (head) dari linked list o insert setelah node tertentu o insert sebelum node tertentu o insert sebagai node akhir (tail) dari linked list • Proses o Inisialisasi : persiapan pembuatan linked list o Membuat simpul awal o Insert simpul kedalam linked list o Delete simpul dari linked list SOURCE CODE : #include<iostream> #include<conio. void INIT(void). yang mempunyai keterurutan tertentu.h> using namespace std. int NILAI. void AWAL(void). yang setiap elemennya terdiri dari dua bagian.*Q.

INSERT DATA"<<endl. cout<<"======================"<<endl. case 3: exit(0). cout<<"4. exit(1).SINGLY LINKED LIST"<<endl. void main (void) { INIT(). } void BUAT_SIMPUL(void)//buat simpul baru { P=(SIMPUL *)malloc(sizeof(SIMPUL)). if(P!=NULL) { cout<<"Nama :". break. FREE_MEMORY(). char PILIHAN[1]. int PIL. exit"<<endl<<endl. cin>>PILIHAN. } } while(PIL<4). cout<<"2. PIL=atoi(PILIHAN). } else { cout<<"pembuatan simpul gagal"<<endl. . HAPUS DATA"<<endl. do { system("cls"). cout<<"LIN. void FREE_MEMORY(void). cout<<"3. switch(PIL) { case 1: INSERT(). case 2: CETAK().cin>>P->NAMA. cout<<"1. break. default: cout<<"TERIMA KASIH"<<endl. getchar(). cout<<"PILIHAN(1-4) : ". break. CETAK DATA"<<endl.void CETAK(void).cin>>P->NIM. } } void INIT(void)//Inisialisasi { FIRST=NULL.HURUF.cin>>P->GENDER.cin>>P->NILAI. cout<<"NIM :". LAST=NULL. cout<<"GENDER :". cout<<"NILAI :".

free(FIRST). } void FREE_MEMORY(void) { while(FIRST!=NULL) { Q=FIRST->LINK. } } else cout<<"data kosong"<<endl. } void CETAK() { int i=1. else INSERT_KANAN(). cout<<"NILAI : "<<Q->NILAI<<endl. if(FIRST==NULL) AWAL(). } } . } void INSERT(void)//insert satu simpul diujung kanan { BUAT_SIMPUL(). getchar().} void AWAL(void)//pembuatan simpul pertama { FIRST=P. cout<<"GENDER : "<<Q->GENDER<<endl. P->LINK=NULL. P->LINK=NULL. LAST=P. cout<<"Nama : "<<Q->NAMA<<endl. cout<<endl. while(Q!=NULL) { cout<<"Data ke : "<<i++<<endl. cout<<"NIM : "<<Q->NIM<<endl. Q=Q->LINK. } void INSERT_KANAN(void) { LAST->LINK=P. FIRST=Q. getchar(). getchar(). if(FIRST!=NULL) { Q=FIRST. LAST=P.

.

.

OUTPUT : .

Kesimpulan : jika delete sebagai simpul pertama pointer first diarahkan pada data ke-2. pointer p diarahkan pada data ke-1 dab bebaskan pointer p(secara otomatis data setelah simpul tertentu terhapus ) .

yaitu sebuah data dan sebuah pointer yang disebut dengan pointer next. dimulai dari head dan menggunakan pointer next dari elemen selanjutnya untuk berpindah dari elemen ke elemen berikutnya sampai elemen yang diminta dicapai. Sehingga. Masing-masing elemen terdiri dari dua bagian. kita harus mulai dari head.PERTEMUAN XII APLIKASI ANTRIAN PADA SINGLE LINGKED LIST • Definisi Single linked list atau biasa disebut linked list terdiri dari elemen-elemen individu. apabila kita mulai dari head dan berpindah ke beberapa elemen dan berharap dapat mengakses elemen sebelumnya. Pointer next pada elemen terakhir merupakan NULL. Dengan single linke list. Elemen pada awal suatu list disebut head. dimana masing-masing dihubungkan dengan pointer tunggal. yang menunjukkan akhir dari suatu list. Dengan menggunakan struktur two-member seperti ini. Untuk mengakses elemen dalam linked list. • Proses FIFO (First In First Out) o INSERT o DELETE : Selalu insert kanan : Selalu delete kiri o Bila FRONT : REAR artinya antrian tinggal 1 (simpul awal) o Bila FRONT : NULL artinya antrian kosong . list dapat dilintasi hanya satu arah dari head ke tail karena masing-masing elemen tidak terdapat link dengan elemen sebelumnya. linked list dibentuk dengan cara menunjuk pointer next suatu elemen ke elemen yang mengikutinya. dan elemen terakhir dari suatu list disebut tail.

cin>>PILIHAN.SOURCE CODE : #include<iostream> #include<conio. break. void INIT(void). break. default: cout<<"TERIMA KASIH"<<endl. case 2: DELETE(). void DELETE(void). void INSERT(void). HAPUS DATA"<<endl. char NIM[10]. void CETAKLAYAR(void). struct SIMPUL *LINK. *FRONT. int NILAI. case 3: CETAKLAYAR(). SIMPUL *P. *REAR. PIL=atoi(PILIHAN). break. void main(void) { INIT(). cout<<"4. switch(PIL) { case 1: INSERT(). } void BUAT_SIMPUL(void)//Buat Simpul Baru . char GENDER. do { system("cls"). void FREE_MEMORY(void). INSERT DATA"<<endl. struct SIMPUL{ char NAMA[10]. cout<<"PILIHAN (1-4):". cout<<"1. break.HURUF. int PIL. cout<<"========================"<<endl. *Q.h> using namespace std. CETAK DATA"<<endl. cout<<"3. EXIT"<<endl. FREE_MEMORY(). char PILIHAN[1]. cout<<"2. void BUAT_SIMPUL(void). cout<<"QUEUE SINGLY LINKED LIST"<<endl. }. } }while(PIL<4).h> #include<stdlib.

REAR=P. } void INSERT(void)//Insert satu simpul diujung kiri { BUAT_SIMPUL(). getch(). if(P!=NULL) { cout<<"Nama : ". getch().cin>>P->NAMA. } else { cout<<"Pembuatan Simpul Gagal"<<endl. REAR=NULL. } . if(FRONT==NULL)//Jika belum ada simpul. REAR->LINK=NULL.{ } void INIT(void)//Inisialisasi { FRONT=NULL. cout<<"NILAI : ". } } void CETAKLAYAR(void)//Cetak seluruh data linked list { P=(SIMPUL *)malloc(sizeof(SIMPUL)). cout<<"NIM : ". } else { REAR->LINK=P.cin>>P->NIM. getch(). REAR=P. FRONT=Q. if(FRONT==NULL) INIT(). exit(1). } else { Q=FRONT->LINK. free(FRONT). jadikan sbg simpul pertama { FRONT=P. REAR->LINK=NULL. } } void DELETE(void)//Delete satu simpul terakhir { if(FRONT==NULL) { cout<<"Data belum ada"<<endl.cin>>P->NILAI. cout<<"GENDER : ". cout<<"Data terakhir dihapus"<<endl.cin>>P->GENDER.

if(FRONT!=NULL) { Q=FRONT. } } else cout<<"Data Kosong"<<endl. cout<<endl. "<<Q->GENDER<<endl. "<<Q->NIM<<endl. free(FRONT). FRONT=Q. "<<Q->NILAI<<endl. } void FREE_MEMORY(void) { while(FRONT !=NULL) { Q=FRONT->LINK. while(Q!=NULL) { cout<<"Data ke cout<<"Nama cout<<"NIM cout<<"GENDER cout<<"NILAI Q=Q->LINK. "<<Q->NAMA<<endl.int i=1. getch(). } } : : : : : "<<i++<<endl. .

.

.

OUTPUT : .

dimulai dari head dan menggunakan pointer next dari elemen selanjutnya untuk berpindah dari elemen ke elemen berikutnya sampai elemen yang diminta dicapai. .Kesimpulan : Jadi jika mengakses elemen dalam linked list.

stack daat diimplementasikan dengan single linked list. maka telah terjadi pemborosan memori untuk sisa 100 elemen. Dengan penggunaan linked list maka tempat yang disediakan akan sesuai dengan banyaknya elemen yang mengisi stack. • Clear Fungsi ini akan menghapus stack yang ada . sementara ketika dipakai oleh user stack hanya diisi 50 elemen. • Pop Fungsi ini mengeluarkan elemen teratas dari stack.PERTEMUAN XIII APLIKASI STACK PADA LINKED LIST • Definisi Selain implementasi stack dengan array seperti telah dijelaskan sebelumnya. Operasi-operasi untuk Stack dengan Linked List • Is Empty Fungsi memeriksa apakah stack yang adamasih kosong. Misalnya pada stack dengan array disediakan tempat untuk stack berisi 150 elemen. Keunggulannya dibandingkan array adalah penggunaan alokasi memori yang dinamis sehingga menghindari pemborosan memori. Dalam stack dengan linked list tidak ada istilah full. sebab biasanya program tidak menentukan jumlah elemen stack yang mungkin ada (kecuali jika sudah dibatasi oleh pembuatnya). Push di sini mirip dengan insert dalam single linked list biasa. • Push Fungsi memasukkan elemen baru ke dalam stack. yakni dibatasi oleh jumlah memori yang tersedia. Namun demikian sebenarnya stack ini pun memiliki batas kapasitas. yang tak terpakai.

void INSERT(void). cout<<"3.h> #include<stdlib. case 3: CETAKLAYAR (). break. case 2: DELETE (). void INIT(void). cout<<"4. do { system("cls"). cout<<"========================"<<endl. break. void BUAT_SIMPUL(void).HAPUS DATA"<<endl. char PILIHAN[1]. SIMPUL *P.SOURCE CODE : #include<iostream> #include<conio.h> using namespace std. struct SIMPUL{ char NAMA[10]. void CETAKLAYAR(void). } void BUAT_SIMPUL (void)//Buat simpul baru { P=(SIMPUL*)malloc(sizeof(SIMPUL)). PIL=atoi(PILIHAN).*FRONT. char GENDER.*REAR. .CETAK DATA"<<endl. HURUF. struct SIMPUL*LINK.*Q. }. int NILAI. cout<<"2. void FREE_MEMORY(void).EXIT"<<endl. default: cout<<"TERIMA KASIH "<<endl.INSERT DATA"<<endl. } }while (PIL<4). break. cout<<"QUEUE SINGLY LINKED LIST"<<endl. void DELETE(void). char NIM[10].cin>>PILIHAN. break. int PIL. FREE_MEMORY(). cout<<"PILIHAN (1-4):". cout<<"1. void main (void) { INIT(). switch(PIL) { case 1: INSERT ().

jadikan sebagai simpul pertama { FRONT=P. cout<<"NIM :". } } void DELETE (void)//Delete satu simpul terakhir { if(FRONT==NULL) { cout<<"Data belum ada"<<endl. getch(). FRONT=Q. FRONT->LINK=NULL. cout<<"Data terakhir dihapus"<<endl.cin>>P->NAMA. if(FRONT!=NULL) if(P!=NULL) { cout<<"NAMA :". if(FRONT==NULL) INIT().} void INIT(void)//Inisialisasi { FRONT=NULL. cout<<"NILAI :". } else { cout<<"Pembuatan Simpul Gagal"<<endl.cin>>P->NIM. } else { Q=FRONT->LINK. FRONT=P. free(FRONT). exit(1). getch().cin>>P->NILAI. FRONT=P. FRONT=NULL. } } void CETAKLAYAR(void)//Cetak seluruh data linked list { int i=1. cout<<"GENDER :". FRONT->LINK=NULL. if(FRONT==NULL)//Jika belum ada simpul. } .cin>>P->GENDER. } void INSERT(void)//Insert Satu Simpul diujung kiri { BUAT_SIMPUL(). } else { FRONT->LINK=P. getch().

free(FRONT). } } . ke :"<<Q->GENDER<<endl. cout<<endl.{ Q=FRONT. :"<<Q->NAMA<<endl. FRONT=Q. } ke :"<<i++<<endl. getch(). while(Q!=NULL) { cout<<"Data cout<<"Nama cout<<"Data cout<<"Data cout<<"Data Q=Q->LINK. } void FREE_MEMORY(void) { while(FRONT!=NULL) { Q=FRONT->LINK. } else cout<<"Data Kosong"<<endl. ke :"<<Q->NIM<<endl. ke :"<<Q->NILAI<<endl.

.

.

OUTPUT : .

PERTEMUAN XIV . Keunggulannya dibandingkan array adalah penggunaan alokasi memori yang dinamis sehingga menghindari pemborosan memori.Kesimpulan : Dengan penggunaan linked list maka tempat yang disediakan akan sesuai dengan banyaknya elemen yang mengisi stack.

bias juga pada file pada external storage. Sequential Search Adalah suatu teknik pencarian data dalam array ( 1 dimensi ) yang akan menelusuri semua elemen-elemen array dari awal sampai akhir. dimana data-data tidak perlu diurutkan terlebih dahulu. Tempat pencarian data tersebut dapat berupa array dalam memori. Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di indeks array terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan untuk pencarian data sangat lama (maksimal). 2.SEARCHING • Definisi Pada suatu data seringkali dibutuhkan pembacaan kembali informasi (retrieval information) dengan cara searching. Binary Search Data yang ada harus diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang dijadikan kunci pencarian. Teknik-teknik Searching o Sequential Search o Binary Search o Interpolation Search o Quick Search 1. Searching adalah pencarian data dengan menelusuri tempat pencarian data tersebut.Kemungkinan terbaik (best case) adalah jika data yang dicari terletak di indeks array terdepan (elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian data sangat sebentar (minimal). Adalah teknik pencarian data dalam dengan cara membagi data menjadi dua bagian setiap kali terjadi proses pengurutan. .

} . 3. maka proses pencarian dicari dengan posisi awal adalah posisi tengah + 1. SOURCE CODE : #include<iostream> using namespace std.34. void main(void) { int x[10]={45.i++) { if(x[i]==bil) { ketemu=true. jumlah++.12. for(i=0.34.jumlah. atau lebih besar? Jika lebih besar. } else { cout<<"Data yang dicari tidak ditemukan"<<endl. int i. cout<<"Data yang di cari adalah : ". jumlah=0. Teknik searching ini dilakukan dengan perkiraan letak data. } } if(ketemu) { cout<<"__jumlah data:"<<jumlah<<endl.34.32. Jika data sama. maka proses pencarian dicari dengan posisi akhir adalah posisi tengah – 1. cin>>bil. apakah sama atau lebih kecil. Interpolation Search Teknik ini dilakukan pada data yang sudah terurut berdasarkan kunci Tertentu.bil.65.23}.i<10.Prinsip pencarian biner adalah: • • • Data diambil dari posisi 1 sampai posisi akhir N Kemudian cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2 Kemudian data yang dicari dibandingkan dengan data yang di tengah.Jika lebih kecil. berarti ketemu.23. bool ketemu=false.76. cout<<"bilangan ditemukan di elemen:"<<i<<endl.

} OUTPUT : .

bias juga pada file pada external storage. Tempat pencarian data tersebut dapat berupa array dalam memori.Kesimpulan : Jadi dengan searching bisa menelusuri tempat pencarian data. .

Ihsan Saiful 2. M.LAPORAN 2 PRAKTIKUM STRUKTUR DATA Asisten : 1. Ade Rahmat Oleh : Nama NIM : Miftah Aris Setiawan : 2009140408 Semester : 3 B (pagi) FAKULTAS TEKNIK INFORMATIKA UNIVERSITAS PAMULANG 2010 .

You're Reading a Free Preview

Mengunduh
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->