Anda di halaman 1dari 21

MAKALAH ALGORITMA DAN STRUKTUR DATA

MENGUPAS HEADER LIST

DISUSUN OLEH BAHRUL ULUM KHAMIM NURHUDA ALFA GANI RIFANI HANDOYO NUR S.A. MUH.MILKY YUDHA H1C011008 H1C011014 H1C011016 H1C011046 H1C011053

TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNIK UNIVERSITAS JENDERAL SOEDIRMAN 2011 / 2012

KATA PENGANTAR
Puji syukur kami panjatkan kehadirat Allah SWT yang telah memberikan rahmat serta karunia-Nya kepada kami sehingga kami berhasil menyelesaikan Makalah ini yang alhamdulillah tepat pada waktunya. Tugas makalah mata kuliah Algoritma dan Struktur Data yang tersusun atas berbagai bahan dalam Topik Struktur List dari sumber bacaan pelajaran tentang algoritma dan struktur data .Makalah ini kami buat untuk memenuhi nilai tugas mata kuliah Algoritma dan Struktur Data.Sehingga mendorong kami sebagai mahasiswa untuk menyusun makalah berjudul Mengupas Header List. Kami menyadari bahwa makalah ini masih jauh dari sempurna, oleh karena itu kritik dan saran dari semua pihak yang bersifat membangun selalu kami harapkan demi kesempurnaan makalah ini. Akhir kata, kami sampaikan terima kasih kepada semua pihak yang telah berperan serta dalam penyusunan makalah ini dari awal sampai akhir. Semoga Allah SWT senantiasa meridhai segala usaha kita. Amin.

Purbalingga 21 Maret 2012

Tim Penyusun

DAFTAR ISI
Daftar Isi .................................................................................................................... BAB I Pendahuluan .................................................................................................. Latar Belakang ............................................................................................... Rumusan Masalah .......................................................................................... Tujuan ........................................................................................................... BAB II Pembahasan .................................................................................................. Apa itu Header ............................................................................................. Fungsi List.h ................................................................................................. Source Code list.h ........................................................................................ Source Code list.h + penjelasan .................................................................. BAB III Kesimpulan ..................................................................................................

BAB I PENDAHULUAN

A. Latar Belakang Struktur Data Dengan Menggunakan Link List. Link List adalah salah satu bentuk struktur data yang dinamis dan saling sambung menyambung. Link List lebih fleksibel digunakan daripada array, karena bersifat dinamis(tidak ada batasan data), berbeda dengan array yang mempunyai batasan data maksimal. Link List dapat dihubungkan dengan variabel bertipe pointer. File header untuk modul daftar jumlah, yang disebut list.h terdapat dalam file dimana daftar jumlah dipakai. File ini berisikan deklarasi tipe data daftar jumlah counClist, dan deklarasi ekstemal untuk empat fungsi yang dibahas dimuka. B. Rumusan Masalah. 1. Apa header itu? 2. Fungsi yang bergantung pada list.h. 3. Apa penjelasan source yang ada didalam list.h? C. Tujuan Penulisan. Dalam penulisan makalah ini, penulis mempunyai beberapa tujuan, yaitu: 1. Penulis ingin mengetahui pengertian tentang header list.h. 2. Penulis ingin mengetahui fungsi dari header list.h.

Bab II Pembahasan Linked List ( Struktur Berkait ) Apa Header Itu?


File header yaitu file yang berisi deklarasi fungsi dan definisi konstanta. Beberapa file judul sudah disediakan di C. File-file ini mempunyai viirri bereksistensi .h. file-file header ini biasanya dipanggil menggunakan fungsi include. Fungsi include sendiri merupakan salah satu jenis pengarah praprosesor yang dipakai untuk membaca file-file header itu sendiri. Kita bahas secara sederhana bagaimana operasi penyisipan atau insertion dan operasi penghapusan atau deletion bekerja pada struktur berkait. Kita mulai dengan struktur singly linked-list atau singkatnya linked list. Linked-list, yang kerap kali disebut pula one-way List, adalah koleksi linear dari elemen data yang disebut simpul atau node. Cara melinearkan urutan, adalah dengan menggunakan penuding atau pointer. Dalam hal ini, setiap simpul terdiri atas dua bagian. Bagian pertama berisi informasi data tersebut, sedangkan bagian kedua merupakan field, link, atau nextpointer. Link inilah yang menghubungkan satu elemen data ke elemen data lainnya, sehingga urutan elemen data tersebut membentuk suatu linear list. Field link ini berisi alamat dari simpul berikutnya dalam list. Ia bernilai 0 bila link tersebut tidak menuding ke data (simpul) lainnya. Penuding ini disebut penuding nol. Gambar dibawah merupakan diagram secara skematik dari sebuah linked list dengan 6 buah simpul. Setiap Simpul digambarkan sebagai dua kotak, Kotak kiri menyajikan bagian informasi (dapat berupa sebuah field NAMA, ataupun field NOMOR-POKOK, ataupun dapat pula berupa sebuah record). Kotak kanan menyajikan field nextpointer. Dari kotak kanan ini tergambar panah mengarah ke simpul berikut. Penuding nol adalah penuding ke simpul akhir dari list yang disajikan dengan tanda X.

Gambar : Linked list dengan 6 simpul (nodes) Linked list adalah sekumpulan elemen/nilai bertipesama yang mempunyai keterurutan keanggotaan.Berdasarkan keterurutan keanggotaan tersebut, jika diketahui sebuah

anggota/elemen senarai maka dapat diketahui elemen berikutnya. Setiap elemen senarai terbagi menjadi 2 bagian, yaitu: Info : Menyimpan informasi, bisa berupa satu elemen data atau beberapa elemen data.

Berikut : Menyimpan alamat dari elemen berikutnya. Yang menggunakan List.h

Fungsi Yang ada di LIST


1. list::assign : memberikan isi ke wadah dalam list. 2. list::back : Mengembalikan referensi ke elemen terakhir dalam wadah. 3. list::begin : Mengembalikan sebuah pointer mengacu ke elemen pertama dalam wadah daftar. 4. list::clear : Mengeluarkan elemen dari list 5. list::insert : memasukan elemen ke dalam list 6. list::max_size : Maksimal List 7. list::merge : Menggabung List 8. list::pop_back : Menghapus Kearah Belakang 9. list::pop_front : Menghapus kearah depan 10. list::push_back : Melaju ke arah belakang 11. list::push_front : Melaju kearah Depan 12. list::remove : Menghapus 13. list::remove_if : Menghapus dengan pengecualian 14. list::resize : Mengubah kembali ukuran List 15. list::size : Ukuran List 16. list::sort : Mengurutkan List 17. list::splice : Memindahkan List

Dan masih banyak lagi fungsi yang lain.

Source Code List.h


#ifndef list_H #define list_H #include #include #include #include #include #define nil NULL #define info(P) (P)->info #define next(P) (P)->next #define first(L) ((L).first) #define last(L) ((L).last) typedef int infotype; typedef struct tElmtList *address; typedef struct tElmtList { infotype info; address next; } ElmtList; typedef struct { address first; address last; } List;

Header List diatas adalah salah satu header list yang ada di internet, karena ketika kami melakukan pencarian header list, kami menemukan banyak header list yang masing-masing isinya berbeda.

/* PROTOTYPE */
//

Mulai Source List.h

/* TEST LIST KOSONG */ bool ListEmpty(List L); /* mengirimkan firs(L)==nil dan list(L)==nil */

/* PEMBUATAN LIST KOSONG */ void CreateList(List *L); /* membuat list kosong first(*L)=nil dan list(*L)=nil */

/* INPUT /OUTPUT */ void BacaList(infotype *x); /* menerima dan mengirimkan masukan list */ void TulisList(List L); /* menampilkan elemen list */

/* MANAJEMEN MEMORY */ address Alokasi(infotype x); /* mengirimkan address hasil alokasi sebuah elemen, jika alokasi berhasil,address tidak nil, jika alokasi gagal,mengirimkan nil */ void Dealokasi(address P); /* menerima input P yang terdefinisi, address P dikembalikan ke sistem, melakukan dealokasi/pengembalian address P */ /* PENAMBAHAN ELEMEN */ void InsertFirst(List *L,infotype x); /* melakukan alokasi untuk elemen x, menambahkan elemen pada posisi pertama jika alokasi berhasil */ void InsertPos(List *L,infotype x,int Pos); /* melakukan alokasi untuk elemen x, mencari posisi ntuk menempatkan elemen x,

menambahkan elemen x posisi yang sudah di tentukan */

void InsertLast(List *L,infotype x); /* melakukan alokasi untuk elemen x, jika list kosong,maka melakukan InsertFirst, menambahkan elemen x pada posisi terakhir jika alokasi berhasil */ /* PENGHAPUSAN ELEMEN */ void DeleteFirst(List *L); /* jika list kosong maka tidak melakukan apa-apa, jika hanya satu elemen maka first(*L)=nil dan last(*L)=nil,dealokasi alamat P, elemen,dealokasi alamat P yang pertama */ void DeletePos(List *L,int Pos); /* jika list kosong maka tidak melakukan apa-apa, jika Posisi elemen yang ingin di hapus tidak ketemu maka tidak melakukan apa-apa, jika Posisi ditemukan maka dealokasi alamat pada posisi tersebut */ void DeleteLast(List *L); /* jika list kosong maka tidak melakukan apa-apa, jika hanya satu elemen maka melakukan DeleteFirst, terakhir dan dealokasi alamat terakhir */ void Max(List L); void Min(List L); void Search(List L); jika lebih dari satu elemen,maka menghapus posisi jika lebih dari satu

/* BODY */ void Max(List L) { address P; P=first(L); int x; x=0; while (P!=nil){

if(x<=info(P)) { x=info(P); } P=next(P); } cout<=info(P)) { x=info(P); } P=next(P); } cout< }

void Search(List L) { address P; P=first(L); int s,k=2; cout<<\nNilai yang ingin dicari: ; while(P!=nil) { if(s==info(P)){

cout< break; } P=next(P); k++; } }

/* TEST LIST KOSONG */ bool ListEmpty(List L) { return ((first(L)==nil)&&(last(L)==nil)); /* mengirimkan first(L)==nil dan list(L)==nil */ } /* PEMBUATAN LIST KOSONG */ void CreateList(List *L) { first(*L)=nil; last(*L)=nil; }

/* INPUT /OUTPUT */ void BacaList(infotype *x) { printf(\nMasukkan data : ); scanf(%d,&(*x));

printf(); }

void TulisList(List L) { address P; P=first(L); printf(Data List=); while (P!=nil) { printf( %d,info(P)); P=next(P); } }

/* MANAJEMEN MEMORY */ address Alokasi(infotype x) { address P; P=(address)malloc(sizeof(ElmtList)); if (P!=nil) { info(P)=x; next(P)=nil;

} /* end if (P!=nil) */ return P; /* mengirimkan alamat hasil alokasi */ }

void Dealokasi(address P) { free(P); /* melakukan dealokasi/pengembalian address P */ }

/* PENAMBAHAN ELEMEN */ void InsertFirst(List *L,infotype x) { address P; P=Alokasi(x); /* alokasi memori unruk elemen x */ if (P!=nil) { /* jika alokasi P tidak nil */ if (ListEmpty(*L)) { /* jika list kosong */ last(*L)=P; } /* end if list kosong */ next(P)=first(*L); first(*L)=P; /* elemen pertama di isi P */ } /* end if alokasi tidak nil */ }

void InsertPos(List *L,infotype x,int Pos) { address P,Ppos; int i=1; Ppos=Alokasi(x); P=first(*L); if ((P==nil)&&(Pos==1)) { /* jika list kosong dan posisi = 1*/ next(Ppos)=P; first(*L)=Ppos; last(*L)=Ppos; } else { if ((P!=nil)&&(Pos==1)) { next(Ppos)=P; first(*L)=Ppos; } else { /* jika listtidak kosong dan posisi != 1*/ while ((next(P)!=nil)&&((i+1)

{ /* masuk looping ketika */ ((next(P)!=nil)&&(i+1

i+=1; /* setiap looping i bertambah 1 */ P=next(P); } /* end while ((next(P)!=nil)&&(i+1 if (((i+1)==Pos)&&(next(P)!=nil)) { /* jika (i+1==Pos) */ next(Ppos)=next(P); next(P)=Ppos; } else { /* jika (i+1!=Pos) */ next(P)=Ppos; last(*L)=Ppos; } /* endif (i+1==Pos) */ } } /* end if ((P==nil)&&(Pos==1)) */ } void InsertLast(List *L,infotype x) { address P; P=Alokasi(x); if (ListEmpty(*L)) // jika list kosong { first(*L)=P; last(*L)=P;

} else // jika list tidak kosong { next(last(*L))=P; last(*L)=P; } /* end if (ListEmpty(*L)) */ }

/* PENGHAPUSAN ELEMEN */ void DeleteFirst(List *L) { address P; P=first(*L); if (!ListEmpty(*L)) //jika list tidak kosong { if (P==last(*L)) // jika dalam list hanya ada 1 elemen { Dealokasi(P); first(*L)=nil; last(*L)=nil; } else // jika dalam list ada lebih dari satu elemen { first(*L)=next(P);

Dealokasi(P); } /* end if (P==last(*L)) */ } /* end if (P!=nil) */ } void DeletePos(List *L,int Pos) { address P,temp; int i=1; P=first(*L); if (!ListEmpty(*L)) //jika list tidak kosong { if ((P==last(*L))&&(Pos==1)) /* jika dalam elemen list hanya ada 1 elemen dan posisi yang akan di hapus adalah elemen 1*/ { Dealokasi(P); first(*L)=nil; last(*L)=nil; } else { if ((next(P)!=nil)&&(Pos==1)) { first(*L)=next(P); Dealokasi(P);

} else { /* jika dalam elemen list ada lebih dari satu elemen */ while ((next(P)!=nil)&&((i+1) { /* loopig ketika ((next(P)!=nil)&&((i+1) i+=1; P=next(P); } /* end while ((next(P)!=nil)&&((i+1) if (next(P)!=nil) { /* jika posisi yang akan dihapus bukan elemen terakhir */ temp=next(P); next(P)=next(next(P)); Dealokasi(temp); } /* endif (next(P)!=nil) */ } } /* end if ((P==last(*L))&&(Pos==1)) */ } /* end if (!ListEmpty(*L)) */ } void DeleteLast(List *L) { address P; P=first(*L); if (!ListEmpty(*L)) { /* jika list tidak kosong */

if (P==last(*L)) { /* jika dalam list hanya ada 1 elemen*/ Dealokasi(P); first(*L)=nil; last(*L)=nil; } else { /* jika dalam list ada lebih dari satu elemen */ while (next(P)!=last(*L)) { /* looping ketika (next(P)!=last(*L)) */ P=next(P); } /* end while (next(P)!=last(*L)) */ Dealokasi(last(*L)); next(P)=nil; last(*L)=P; } /* endif (P==last(*L)) */ } /* end if (!ListEmpty(*L)) */ } #endif

Akhir Source List.h

Bab III KESIMPULAN


Header list.h merupakan sebuah header yang berisikan fungsi-fungsi untuk menerapkan sebuah list di sebuah program, yang dibuat dengan bahasa pemrograman C++, sehingga dengan list dapat dibuat sebuah daftar urutan dengan mudah. List sendiri adalah sebuah wadah yang digunakan untuk membuat sebuah daftar elemen, yang dapat menyimpan elemen yang masuk dalam list tersebut.

Daftar Pustaka
http://www.cplusplus.com/ http://www.java2s.com/Code/Cpp/Data-Structure/Sortalist.htm http://www.koders.com/cpp/fid39F0156F06F99D06919A74FF09E528715155B8CC.aspx?s=cde f%3Atree