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.

pert1 - pointer, array, perkenalan data stuktur, dan perkenalan linked list - 2101711791 - Malik Naufal Dwiyanto

ARRAY

  • Array adalah kumpulan dari data homogen yang mempunyai index/kunci untuk setiap kontennya. 
  • Array dibagi menjadi dua jenis yaitu Array indexed dan associative.
    • Indexed artinya setiap konten di dalam Array di tandai oleh angka desimal yang berawal dari 0.
    • Sedangkan associative Array adalah Array yang setiap kontennya ditandai oleh karakter, string, atau apapun sehingga dapat di asosiasikan kontennya.
  • Array juga dibagi berdasarkan dimensinya.
    • Array 1D.
    • Array 2D.
    • Array multi dimension.
  • Maksimal data yang dapat ditampung oleh Array adalah ketika memori pada JDK java itu habis, beberapa sumber menyebutkan bahwa alokasi memori aman pada java berada pada angka 2 147 483 639 (integer.MAX_value - 8) jika mengalokasikan Array lebih besar dapat mengakibatkan OutOfMemory.
  • Operasi pada Array.
    • Transfersal.
    • Insertion.
    • Searching.
    • Deleton.
    • Merging.
    • Sorting.

POINTER

  • Variable Pointer adalah variable yang di gunakan untuk merujuk ke suatu alamat tertentu.
  • Variable Pointer tidak berisikan value melainkan berisikan alamat suatu variable lain.
  • operator yang paling penting digunakan dalam pointer adalah "*" dan "&".

STRUKTUR DATA

  • Struktur data adalah cara menyimpan atau merepresentasikan data dalam komputer agar bisa dipakai secara efisien