WELCOME TO MY BLOG

Rabu, 22 Juni 2011

double linked list c++

alhamdulillah akhirnya tugas final projectku selesai juga
lega rasanya praktikum struktur data udah kelar

langsung saja tanpa basa-basi :

A. DEFINISI
Double Linked List (DLL) adalah suatu cara pengolahan data yang bekerja dengan record dalam jumlah besar, sehingga membutuhkan alokasi memori dinamis yang besar pula. DLL biasanya digunakan pada saat alokasi memori konvensional tidak lagi bisa diandalkan. Sedangkan bekerja dengan data yang besar tidak dapat dihindari lagi, karena tidak jarang pula, data besar tersebut memiliki hubungan yang erat.

Di dalam DLL tidak hanya sekadar menampilkan setiap record-nya, melainkan dapat pula menambahkan record, menghapus beberapa record sesuai keinginan pengguna, sampai mengurutkan record. Kondisi tersebut memungkinkan dimilikinya satu rantai data yang panjang dan saling berhubungan.
Pada Double Linked List, setiap node memiliki dua buah pointer ke sebelah kiri (prev) dan ke sebelah kanan (next). Gambar 1 memperlihatkan sebuah node dari Double Linked List.
Bertambah lagi komponen yang akan digunakan. Apabila dalam Single Linked List hanya memiliki head, curr dan node, maka untuk Double Linked List, ada satu penunjuk yang berfungsi sebagai akhir dari list: tail. Bagian kiri dari head akan menunjuk ke NULL. Demikian pula dengan bagian kanan dari tail. Setiap node saling terhubung dengan pointer kanan dan kiri. Gambar 2 memperlihatkan contoh Double Linked List.

B. ABSTRAKSI TIPE DATA DOUBLY LINKED LIST
Abstraksi tipe data Double Linked List sedikit berbeda dengan Single Linked List, yaitu tinggal menambahkan pointer prev dan harus diawali dengan pembuatan struct tnode.
Kemudian, mendeklarasikan beberapa node yang akan digunakan sebagai head, tail, node aktif (curr) dan node sementara (node) seperti berikut:
Sama seperti pada pembuatan Single Linked List, dalam pembuatan Double Linked List ini, akan membuat sebuah perulangan sebanyak 5 kali untuk mengisikan nilai 0 sampai 4 ke dalam field x untuk masing-masing node.
Secara umum, kode yang dibuat hampir sama dengan pembuatan Single Linked List. Hanya bedanya, pada Double Linked List, pointer kiri dan kanan dihubungkan dengan suatu node.

Pertama-tama, tentunya perlu diuji apakah head bernilai NULL yang artinya belum ada satu node pun yang tercipta. Apabila demikian, maka node yang dibuat akan menjadi head. Node aktif (curr) pun diset sesuai node yang dibuat. Dan sebagai konsekuensi dari Double Linked List, maka diatur pointer prev pada head menunjuk ke NULL.
Untuk menguji keberhasilan Double Linked List, awal list sampai akhir list akan dicetak dengan deklarasi: Dan karena apa yang dibentuk adalah Double Linked List, maka juga mencetak dari tail sampai head, dengan deklarasi:Untuk membebaskan memori teralokasi, dilakukan dengan pemanggilan fungsi free(). Kode selengkapnya:
Operasi pada linked list tidak hanya pembuatan dan pencetakan. Suatu saat, mungkin perlu untuk menghapus node yang terletak di tengah-tengah list. Atau bahkan mungkin perlu menyelipkan node di tengah-tengah node.

berikut adalah potongan codingnya :
untuk lebih lengkapnya selahkan download disini . . . .!!!


doble=1;
temp=temp->next;
}
if(doble==0)
{
data->kode=angka;
printf("\nNama\t\t\t= ");
scanf("%s",&data->nama);
printf("Harga Beli\t\t= ");
scanf("%d",&data->hrg_beli);
printf("Harga Jual\t\t= ");
scanf("%d",&data->hrg_jual);
printf("Terima\t\t\t= ");
scanf("%d",&data->terima);
printf("Kembali\t\t\t= ");
scanf("%d",&data->kembali);
printf("Kirim\t\t\t= ");
scanf("%d",&data->kirim);
printf("Sisa\t\t\t= ");
scanf("%d",&data->sisa);
printf("Tanggal Kadaluarsa\t= ");
scanf("%d",&data->tgl_kdl);
data->next=NULL;
data->prev=NULL;
jmlh++;

0 komentar: