Sabtu, 08 Maret 2014

Linked list :

Linked list (list bertaut) adalah salah satu struktur data dasar yang sangat fundamental. Dengan menggunakan linked list maka programmer dapat menimpan datanya kapanpun dibutuhkan.hampir sama kaya nya dah dengan array. :D

Linked list adalah struktur data berupa deret data yang dinamis, karena dapat ditambahkan ataupun dihapus. Adapun bagian dari linked list :

  1. linked list terdiri dari rantai node/ simpul dimana tiap node terdiri dari data, pointer yang merujuk data node-nya sendiri dan pointer merujuk pada node yang mengikutinya.
  2. Linked list memilki head/ kepala (node awal) dan tail/ekor (node akhir). Karena tail adalah node akhir, dengan demikian, dalam node tail, pointer yang merujuk pada node selanjutnya adalah samadengan NULL.
  3. Jika linked list hanya terdiri dari satu node, maka, dalam node tersebut, pointer yang merujuk pada node selanjutnya adalah samadengan NULL. 
jenis-jenis linked list.

> Singly linked list
> Double linked list
> Multie linked list
Contoh Coding :

#include  //Library untuk standar input output
#include /*Standar library untuk jeda/menghentikan sementara
            console saat program dijalankan */
#include  //Library untuk menangani string/karakter

typedef struct simpul { /*Deklarasi struktur dengan nama simpul yang
                mempunyai anggota dengan berbagai tipe data
                berikut */

    char nama[20]; /*Deklarasi variabel nama bertipe integer
            dengan batas karakter 20 */
    float nilai; /*Deklarasi variabel nilai bertipe float */
    struct simpul *next_simpul; /*Deklarasi struktur simpul dengan
                        pointer simpul berikutnya sebagai node */
} simpulku; //Nama variabel simpulku

void main()
{
    //Deklarasi pointer dari simpulku spasi nama variabel
    simpulku *simpul1, *simpul2, *simpul3, *simpul4, *temp;

    //alokasikan memorinya dulu
    simpul1 = (simpulku *)malloc(sizeof(simpulku)); /*pengalokasian alamat
                            memori ke dalam variabel simpul1*/
    simpul2 = (simpulku *)malloc(sizeof(simpulku));/*pengalokasian alamat
                            memori ke dalam variabel simpul2*/
    simpul3 = (simpulku *)malloc(sizeof(simpulku));/*pengalokasian alamat
                            memori ke dalam variabel simpul3*/

    //isi data masing2 simpul
    strcpy(simpul1->nama, "Amin"); /*mengcopy variabel nama string
                        "Amin" ke variabel simpul 1*/

    strcpy(simpul2->nama, "Budi");/*mengcopy variabel nama string
                        "Budi" ke variabel simpul 2*/
    strcpy(simpul3->nama, "Citra");/*mengcopy variabel nama string
                        "Citra" ke variabel simpul 3*/

    simpul1->nilai=90; /*string dari variabel simpul1
                ("Amin") bernilai 90*/
    simpul2->nilai=20;/*string dari variabel simpul2
                ("Budi") bernilai 20 */
    simpul3->nilai=100; /*string dari variabel simpul3
            ("Citra") bernilai 100 */
    simpul1->next_simpul = NULL;

    //sambungkan link masing2 simpul

    simpul1->next_simpul = simpul2; /* membuat node (penghubung) dari simpul */
    simpul2->next_simpul = simpul3;
    simpul3->next_simpul = NULL; /*Null artinya setelah simpul3 tidak ada
                    lagi simpul penghubung (node) */

    //tampilkan hasilnya, mulai dr simpul 1
    temp = simpul1; //cara satu per satu
    printf("%s, %f\n", temp->nama, temp->nilai);
    /*temp->nama adalah "Amin" , temp->nilai adalah 90 */
    temp = temp->next_simpul; //node (penghubung)

    printf("%s, %f\n", temp->nama, temp->nilai);
    /*temp->nama adalah "Budi" , temp->nilai adalah 20 */
    temp = temp->next_simpul;

    printf("%s, %f\n", temp->nama, temp->nilai);
    /*temp->nama adalah "Citra" , temp->nilai adalah 100 */
    printf("\n"); //menambahkan baris baru

    //skenario menambahkan simpul baru

    simpul4 = (simpulku *)malloc(sizeof(simpulku)); /*siapkan alokasi
                                memori ke variabel simpul4 */
    strcpy(simpul4->nama, "Dewi");simpul4->nilai=80; /*Menyalin isi
                                                        variabel nama Dewi
                                                     ke variabel simpul4 kemudian diberi
                                                     nilai 80 */
    simpul2->next_simpul = simpul4; //update link
    simpul4->next_simpul = simpul3;
    printf("\n");
    temp = simpul1;

    for(;temp!=NULL; temp=temp->next_simpul) //cara looping
        printf("%s, %f\n", temp->nama, temp->nilai);
    //menghapus simpul budi

    simpul1->next_simpul = simpul4; //update link
    free(simpul2); //hapus simpul
    printf("\n");
    temp = simpul1;

    for(;temp!=NULL; temp=temp->next_simpul) //cara looping
        printf("%s, %f\n", temp->nama, temp->nilai);

    system("pause");
    return 0;
}


Nama : Daniel Dotulong
Nim   : 1701297021

7 komentar:

Komentar dengan sopan

Subscribe to RSS Feed Follow me on Twitter!