MODUL 10 LINKED LIST



LAPORAN PRAKTIKUM MODUL X

LINKED LIST


Dosen : Endra Suseno, M.Kom

ANDIKA PRATAMA
20160910005
Sistem Informasi B (2016)



Universitas Kuningan


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 dengan mudah ditambah atau dikurangi, berbeda dengan array yang ukurannya bersifat tetap. Disamping itu, manipulasi terhadap setiap elemen seperti menyisipkan, menghapus, maupun menambah dapat dilakukan dengan lebih mudah.

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 codingannya :

struct Mahasiswa{
char nama[25];

int usia;
struct Mahasiswa *next;
}*head,*tail;

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 codingannya :

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


Praktikum 10.1
Compiler : Borland C++
  • syntax
 #include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<conio.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);
    getch();
    return 0;
}

  • hasil run
  • analisis


Dalam program linked list tersebut menggunakan struct untuk mengakses variablenya dan perintah nod*next itu next nya berfungsi untuk menyimpan nilai selanjutnya dan merupakan sebuah variable pointer,dalam program diatas terdapat fungsi main yang sangat dibutuhkan dalam hasil akhir karena menentukan tampilan yang diproses dalam function.

int main()
{
    NODPTR pel;
    NODPTR n;
    ciptasenarai (&pel);
    n=nodbaru(55);
    sisipsenarai (&pel,n,NULL);
    n= nodbaru(75);
    sisipsenarai (&pel,n,NULL);
    cetaksenarai(pel);
    getch();
    return 0;
}

 

Praktikum 10.2
Compiler : Borland C++
  • syntax
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

typedef struct mahasiswa
{
    int nim;
    mahasiswa *next;
}m;

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 run
  • analisis
Dalam program in akan menampilkan sebuah nim dari mahasiswa, sama seperti sebelumnya variable next ini bergunak untuk selanjutnya atau bisa di bilang nilai selanjutnya yang akan keluar, dan variable pointer p ini berguna untuk memberitahu bahwa *p ini = null atau nol,seperti program sebelumnya fungsi main menjadi hasil akhir dalam program diatas yang berfungsi untuk menampilkan tampilan pada layar.

int main()
{
    mahasiswa *head;
    init (&head);
    add(&head,56);
    getch();

    return 0;

Latihan 10.1
Compiler : Borland C++
  • syntax

#include<stdio.h>
#include<stdlib.h>
struct node{
                int data;
                struct node *p;};

void tambahelemen(struct node **d,struct node **b, int nilai){
    struct node*temp;
    temp= (struct node *)malloc (sizeof (struct node));

temp->data=nilai;
temp->p=NULL;
if (*d == NULL) {
    *d= temp;
    }else{
        (*b)->p = temp;}
        *b = temp;}
        void hapuselemen (struct node **d,struct node **b){
        struct node *temp;
        if (*d == NULL){
        printf ("Tidak Terdapat Elemen Dalam Queue");
        }else{
        temp = *d;
        *d = temp->p;
        free (temp);
        if (*d == NULL){
        *b = NULL;
        }
        }
        }
        void tampilkannilai (struct node *d){
        int nilai;
        while (d != NULL){
        nilai = d->data;
        printf("%d\n", nilai);
        d=d->p;
        }  }
        int main (void){
        struct node *depan, *belakang;
        depan = belakang = NULL;
        tambahelemen(&depan,&belakang,10);
        tambahelemen(&depan,&belakang,20);
        tambahelemen(&depan,&belakang,30);
        tambahelemen(&depan,&belakang,40);
        tampilkannilai (depan);
        hapuselemen (&depan,&belakang);
        printf("Nilai-Nilai didalam Queue\n");
        printf("Setelah Penghapusan Pertama:\n");
        tampilkannilai(depan);

        return 0;
        }


 

  • hasil run
  • analisis
program diatas adalah program antrian yang terdapat penghapusan antrian. Dan Dalam program ini menggunakan function, pointer dan juga linked list( temp -> data ), linked list ini berguna sebagai penghubung nilai satu dengan yang lannya.function void TambahElemen yang berfungsi untuk menambahkan nilai dalam antrian, 

 void tambahelemen(struct node **d,struct node **b, int nilai){
    struct node*temp;
    temp= (struct node *)malloc (sizeof (struct node));

temp->data=nilai;
temp->p=NULL;
if (*d == NULL) {
    *d= temp;
    }else{
        (*b)->p = temp;}
        *b = temp;}


bisa dilihat di syntax ( terdapat syntax linked list ) Function HapusElemen berguna untuk menghapus sebuah antrian di mana dalam function ini terdapat sebuah if untuk menentukan kodisi apakah terdapat antrian atau tidak.

 void hapuselemen (struct node **d,struct node **b){
        struct node *temp;
        if (*d == NULL){
        printf ("Tidak Terdapat Elemen Dalam Queue");
        }else{
        temp = *d;
        *d = temp->p;
        free (temp);
        if (*d == NULL){
        *b = NULL;
        }
        }
        }

 dan pada fungsi main terdapat instruksi-instruksi untuk hasil akhir yang menentukan tampilan setelah di Run.

 int main (void){
        struct node *depan, *belakang;
        depan = belakang = NULL;
        tambahelemen(&depan,&belakang,10);
        tambahelemen(&depan,&belakang,20);
        tambahelemen(&depan,&belakang,30);
        tambahelemen(&depan,&belakang,40);
        tampilkannilai (depan);
        hapuselemen (&depan,&belakang);
        printf("Nilai-Nilai didalam Queue\n");
        printf("Setelah Penghapusan Pertama:\n");
        tampilkannilai(depan);

Comments

Popular Posts