per2 - implementasi linked list - 2101711791 - Malik Naufal Dwiyanto

DEFINISI LINKED LIST

Linked list adalah suatu cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data yang diperlukan. Program akan berisi suatu struct atau definisi kelas yang berisi variabel yang memegang informasi yang ada didalamnya, dan mempunyai suatu pointer yang menunjuk ke suatu struct sesuai dengan tipe datanya.
Struktur dinamis ini mempunyai beberapa keuntungan dibanding struktur array yang bersifat statis. Struktur ini lebih dinamis, karena banyaknya elemen dengan mudah ditambah atau dikurangi, berbeda dengan array yang ukurannya bersifat tetap.
Manipulasi setiap elemen seperti menyisipkan, menghapus, maupun menambah dapat dilakukan dengan lebih mudah.

Contoh :

//Program:link1.cpp
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>

typedef struct nod {
            int data;
            struct nod *next;
} NOD, *NODPTR;

void CiptaSenarai(NODPTR *s)
{
            *s = NULL;
}

NODPTR NodBaru(int m)
{
            NODPTR n;

            n = (NODPTR) malloc(sizeof(NOD));
            if(n != NULL) {
                        n -> data = m;
                        n -> next = NULL;
}
return n;
}

void SisipSenarai (NODPTR *s, NODPTR t, NODPTR p)
{
            if (p==NULL) {
                        t -> next = *s;
                        *s = t;
            }
            else {
                        t -> next = p -> next;
                        p ->next = t;
            }
}

void CetakSenarai (NODPTR s)
{
            NODPTR ps;
            for (ps = s; ps != NULL; ps = ps -> next)
                        printf("%d -->", ps -> data);
            printf("NULL\n");
}

int main ()
{
            NODPTR pel;
            NODPTR n;

            CiptaSenarai(&pel);
            n = NodBaru(55);
            SisipSenarai(&pel, n, NULL);
            n= NodBaru(75);
            SisipSenarai(&pel, n, NULL);
            CetakSenarai(pel);
            return 0;
}

Bila program dijalankan maka :
          75->55->NULL


TEKNIK DALAM LINKED LIST

Pengulangan Linked List

Secara umum pengulangan ini dikenal sebagai while loop. Kepala pointer (head pointer) dikopikan dalam variabel lokal current yang kemudian dilakukan perulangan dalam linked list. Hasil akhir dalam linked list dengan current!=NULL. Pointer lanjut dengan current=current->next.

Contoh :

            // Return the number of nodes in a list (while-loop version)
            int Length(struct node * head) {
                        int count = 0;
                        struct node* current = head;
                        while (current != NULL) {
                                    count++;
                                    current=current->next;
                        }
                        return (count);
            }

Membuat Kepala Senarai Dengan Perintah Push()

Cara termudah untuk membuat sebuah senarai dengan menambah node pada “akhir kepala” adalah dengan push().

Contoh :

            struct node* AddAtHead() {
                        struct node* head = NULL;
                        int i;
                        for ( i=1; i<6; i++) {
                                    push (&head, i);
                        }
                        // head == { 5, 4, 3, 2, 1 };
                        return (head);
            }

Dalam membuat tambahan node pada akhir senarai (list) dengan menggunakan perintah Push(), jika terjadi kesalahan maka urutan akan terbalik.

Tidak ada komentar:

Posting Komentar