Senin, 12 Juni 2017

Modul 10 - Linked List

Linked List

Tujuan Praktikum :

1.Dapat mengenal dan memahami linked list
2.Dapat mengimlementasikan linked list pada bahasa c/c++


Dasar Teori :


Linked List adalah suatu cara untuk menyimpan data dengan struktur sehingga programmer dapat secara otomatis menciptakan suatu tempat baru untuk menyimpan data kapan saja diperlukan. Secara rinci, programmer dapat menulis 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 yang mudah ditambah atau dikurangi, berbeda dengan array yang ukurannya bersifat tetap. Disamping itu, manipulasi terhadap elemen seperti menyisipkan, menghapus, maupun menambah dapat dilakukan dengan lebih mudah.


Ada beberapa macam Linked List, yaitu :
  1. Single Linked List
  2. Double Linked List
  3. Circular Linked List
  4. Multiple Linked List
1. Single Linked List
Single Linked List merupakan suatu linked list yang hanya memiliki satu variabel pointer saja. Dimana pointer tersebut menunjuk ke node selanjutnya. Biasanya field pada tail menunjuk ke NULL.
contoh 
:

contoh codingannya :
struct Mahasiswa
{
   char nama[25];
   int usia;
   struct Mahasiswa *next;
}*head,*tail;

2. Double Linked List 
Double Linked List merupakan suatu linked list yang memiliki dua variabel pointer yaitu pointer yang menunjuk ke node selanjutnya dan pointer yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga menunjuk ke NULL.
contoh :

contoh codingannya :
struct Mahasiwa
{
   char nama[25];
   int usia;
   struct Mahasiswa *next,*prev;
}*head,*tail;

3. Circular Linked List
Circular Linked List merupakan suatu linked list dimana tail (node terakhir) menunjuk ke head (node pertama). Jadi tidak ada pointer yang menunjuk NULL. Ada 2 jenis Circular Linked List, yaitu :
  • Circular Single Linked List


  • Circular Double Linked List


Multiple Linked List
Multiple Linked List merupakan suatu linked list yang memiliki lebih dar 2 buat variabel pointer. contoh : 

Latihan 10.1
Syntaxnya :

#include <stdio.h> // lan-balon.blogspot.co.id
#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;
}

    Hasil Runningnya :





    Latihan 10.2
    Syntaxnya :

    #include <stdio.h> // lan-balon.blogspot.co.id
    #include <stdlib.h>
    #include <conio.h>

    typedef struct Mahasiswa
    {
    int nim;
    Mahasiswa *next;
    }Mahasiswa;

    void init (Mahasiswa **p)
    {
    *p = NULL;
    }

    Mahasiswa *alokasi (int nim)
    {
    Mahasiswa *p;
    p = (Mahasiswa*) malloc (sizeof(Mahasiswa));
    if (p != NULL)
    {
    p -> next = NULL;
    p -> nim = nim;
    }
    return (p);
    }

    void add (Mahasiswa **p, int nim)
    {
    *p = alokasi(nim);
    printf ("%d", (*p) -> nim);
    }

    int main()
    {
    Mahasiswa *head;
    init (&head);
    add (&head,56);
    getch();
    return 0;
    }
      Hasil Runningnya :





      • Latihan 10.1

      Share this

      0 Comment to "Modul 10 - Linked List"

      Posting Komentar