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.
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.
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.
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 */
//
/* 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,
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
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)){
/* 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; }
printf(); }
void TulisList(List L) { address P; P=first(L); printf(Data List=); while (P!=nil) { printf( %d,info(P)); P=next(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)
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;
/* 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
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