linked list

24
1 MAKALAH ALGORITMA DAN STRUKTUR DATA LINKED LIST(SENARAI) DISUSUN OLEH : MAYONG ADI WARDANA NIM : D41113008 TEKNIK ELEKTRO UNIVERSITAS HASANUDDIN MAKASSAR 2015

Upload: thagiat-elektro

Post on 15-Dec-2015

38 views

Category:

Documents


4 download

DESCRIPTION

Contoh Makalah Algoritma dan Struktur Data

TRANSCRIPT

  • 1

    MAKALAH

    ALGORITMA DAN STRUKTUR DATA

    LINKED LIST(SENARAI)

    DISUSUN OLEH :

    MAYONG ADI WARDANA

    NIM : D41113008

    TEKNIK ELEKTRO

    UNIVERSITAS HASANUDDIN

    MAKASSAR

    2015

  • 2

    KATA PENGANTAR

    Puji syukur kehadirat Tuhan Yang Maha Kuasa atas segala limpahan Rahmat

    dan Izinnyalah sehingga saya dapat menyelesaikan penyusunan makalah yang

    berjudul LINKED LIST walaupun bentuk dan isinya sangat sederhana.

    Semoga adanya makalah ini kita dapat memahami penggunaan array dalam

    algoritma pemrograman bahasa komputer. Selain itu dengan adanya makalah ini

    pembaca dapat menjadikannya sebagai acuan pengembangan pengetahuan baru

    tentang SENARAI.

    Dalam penyusunan makalah yang berjudul LINKED LIST ini saya

    mendapat berbagai rintangan yang Alhamdulillah dapat terselesaikan juga. Ini

    semua berkat bantuan dosen pembimbing yang telah bersedia memberikan

    pemahaman yang tepat tentang array dan teman kelompok satu yang telah

    memberikan pemahamannya tentang senarai. Terima kasih banyak untuk teman

    kelompok satu, serta terima kasih banyak untuk dosen pembimbing.

    Makalah yang saya buat ini pastinya masih memiliki banyak kekurangan.

    Oleh karena itu saya harapkan para pembaca dapat memberikan masukan-

    masukan yang bersifat membangun demi penyempurnaan makalah ini.

    19 Mei 2015

    (Mayong Adi Wardana)

    NIM : D41113003

  • 3

    BAB I

    PENDAHULUAN

    Dalam suatu linear list kita dapat melakukan operasi penyisipan atau penghapusan

    atas elemen-elemennya pada sembarang posisi.

    Misalkan ada 1500 item yang merupakan elemen dari suatu linear list.

    Jika elemen ke-56 akan kita keluarkan, maka elemen ke-1 s/d elemen ke-55 tidak

    akan berubah posisinya pada linear list tersebut. Tetapi elemen ke-57 akan

    menjadi elemen ke-56, elemen ke-58 akan menjadi elemen ke-57 dst.

    Selanjutnya, jika kita sisipkan satu elemen pada posisi setelah elemen ke-41, maka

    elemen ke-42 s/d elemen ke-1500 akan berubah posisinya.

    Untuk menyatakan keadaan diatas diperlukan suatu konsep yang berbeda dengan

    konsep sekuensial sebelumnya.

    Linked list merupakan suatu cara non-sekuensial yang digunakan untuk

    merepresentasikan suatu data.Struktur data adalah cara menyimpan atau

    merepresentasikan data di dalam komputer agar bisa dipakai secara efisien

    Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan

    tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk

    tulisan, suara, gambar, sinyal atau symbol. Secara garis besar type data dapat

    dikategorikan menjadi :

    1. Type data sederhana

    a. Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter

    b. Type data sederhana majemuk, misalnya String

    2. Struktur Data, meliputi

    a. Struktur data sederhana, misalnya array dan record

    b. Struktur data majemuk, yang terdiri dari Linier : Stack, Queue, serta List dan

    Multilist Non Linier : Pohon Biner dan Graph

    Pemakaian struktur data yang tepat di dalam proses pemrograman akan

    menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program

    secara keseluruhan lebih efisien dan sederhana. Struktur data yang standar yang

    biasanya digunakan dibidang informatika adalah :

  • 4

    List linier (Linked List) dan variasinya

    Multilist

    Stack (Tumpukan)

    Queue (Antrian)

    Tree ( Pohon )

    Graph ( Graf )

    Adapun bahasa yang digunakan pada metode sorting ini ialah bahasa C. Dalam

    hal ini, penulis menggunakan aplikasi Notepad++. Adapun langkah-langkah

    penggunaannya ialah sebagai berikut:

    a. Siapkan aplikasi Notepad++ terlebih dahulu.

    b. Buka aplikasi Notepad++.

    c. Buatlah suatu program. Dalam suatu program sudah terdapat fungsi mulai dari

    fungsi global sampai fungsi lokal. Dalam sebuah fungsi, di dalam nya sudah

    termasuk variable, konstanta, masukkan dan lain sebagainya.

    d. Apabila program telah dibuat, maka simpan program tersebut dengan format

    file.c.

    e. Setelah program tersimpan, maka compile (jalankan) program tersebut dengan

    format gcc o file file.c atau gcc file.c o file.exe. kemudian tunggu

    beberapa saat hingga dapat melakukan eksekusi program file.exe

    f. Setelah program dijalankan, maka selesai proses mengcompile program.

    1.1 Latar Belakang

    Kajian struktur data merupakan kajian yang sangat penting dalam bidang

    informatika. Dan di zaman sekarang ini yang teknologinya semakin berkembang,

    dibutuhkan struktur data yang efisien yang dapat meningkatkan kinerja program.

    Salah satu bentuk struktur data yang berisi kumpulan data yang tersusun

    secara sekuensial, saling bersambungan, dinamis dan terbatas adalah linked list

    (senarai berkait). Suatu linked list adalah suatu simpul (node) yang dikaitkan

    dengan simpul yang lain dalam suatu urutan tertentu. Suatu simpul dapat

    berbentuk suatu struktur atau class. Simpul harus mempunyai satu atau lebih

    elemen struktur atau class yang berisi data.

  • 5

    Secara teori, linked list adalah sejumlah node yang dihubungkan secara linier

    dengan bantuan pointer. Dikatakan single (singly) linked apabila hanya ada satu

    pointer yang menghubungkan setiap node. single artinya field pointer-nya hanya

    satu buah saja dan satu arah.

    Linked list adalah struktur data yang paling dasar. Linked list terdiri atas

    sejumlah unsur-unsur dikelompokkan, atau terhubung, bersama-sama di suatu

    deret yang spesifik. Linked list bermanfaat di dalam memelihara koleksi-koleksi

    data, yang serupa dengan array. Bagaimanapun juga, linked list dan array

    mempunyai perbedaan. Memakai Linked list lebih bagus dibandingkan dengan

    array/larik baik dalam banyak hal. Secara rinci, linked list lebih efisien di dalam

    melaksanakan penyisipan-penyisipan dan penghapusan-penghapusan. Linked list

    juga menggunakan alokasi penyimpanan secara dinamis, yang merupakan

    penyimpanan yang dialokasikan pada runtime. Karena di dalam banyak aplikasi,

    ukuran dari data itu tidak diketahui pada saat kompile, hal ini bisa merupakan

    suatu atribut yang baik juga. Setiap node akan berbentuk struct dan memiliki satu

    buah field bertipe struct yang sama, yang berfungsi sebagai pointer. Dalam

    menghubungkan setiap node, kita dapat menggunakan cara first-create-first-access

    ataupun first-create-last-access. Yang berbeda dengan deklarasi struct sebelumnya

    adalah satu field bernama next, yang bertipe struct tnode. Hal ini sekilas dapat

    membingungkan. Namun, satu hal yang jelas, variabel next ini akan

    menghubungkan kita dengan node di sebelah kita, yang juga bertipe struct tnode.

    Hal inilah yang menyebabkan next harus bertipe struct tnode.

    Secara umum linked list dibedakan atas 2 macam, yaitu :

    1. Single Linked List

    2. Double Linked List

    Pada makalah ini kami akan menjelaskan Single linked list non circular

    Menambah Dibelakang.

  • 6

    1.1.1 Latar Belakang Single Linked List NON Circular (SLLNC)

    Dikembangkan tahun 1955-1956 oleh Allen Newell, Cliff Shaw dan Herbert

    Simon di RAND Corporation sebagai struktur data utama untuk bahasa

    Information Processing Language (IPL).

    IPL dibuat untuk mengembangkan program artificial intelligence, seperti

    pembuatan Chess Solver.

    Victor Yngve di Massachusetts Institute of Technology (MIT) juga menggunakan

    linked list pada natural language processing dan machine transitions pada bahasa

    pemrograman COMMIT.

    Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node)

    yang tersusun secara sekuensial, saling sambung-menyambung, dinamis dan

    terbatas.

    Linked List sering disebut juga Senarai Berantai

    Linked List saling terhubung dengan bantuan variabel pointer

    Masing-masing data dalam Linked List disebut dengan node (simpul) yang

    menempati alokasi memori secara dinamis dan biasanya berupa struct yang terdiri

    dari beberapa field.

    1.2 Rumusan Masalah

    Apakah pengertian Linked List Non Circular

    Implementasi (dalam program) Linked List Non Circular

    1.3 Tujuan

    Mahasiswa dapat memahami Single Linked List Non Circular

    Mahasiswa dapat menerapkan Single Linked List Non Circular

  • 7

    BAB II

    PEMBAHASAN

    2.1 Pengertian Single Linked List Non Circular

    Pengertian:

    Single : artinya field pointer-nya hanya satu buah saja dan satu arah serta pada

    akhir node, pointernya menunjuk NULL

    Linked List : artinya node-node tersebut saling terhubung satu sama lain.

    Setiap node pada linked list mempunyai field yang berisi pointer ke node

    berikutnya, dan juga memiliki field yang berisi data.

    Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi

    berhenti pada saat pembacaan isi linked list..

    2.2 Proses Pembuatan Single Linked List Non Circular

  • 8

    a. Pembuatan sebuah struct

    typedef struct TNode {

    int data;

    TNode *next;

    };

    b. Pembuatan variabel pointer Head

    Head yang akan selalu menunjuk pada node pertama

    TNode *head

    c. Membuat fungsi inisialisasi single linked list

    Void init()

    {

    head=NULL;

    }

    d. Membuat fungtion untuk mengetahui kondisi single linked list

    Jika pointer tidak menunjuk pada suatu node maka kosong

    Int isEmpty()

    {

    if (head==NULL) return 1;

  • 9

    else return 0;

    }

    e. Membuat node didepan

    Penambahan node baru akan dikaitan di node paling depan, namun pada saat

    pertama kali (data masih kosong), maka penambahan data dilakukan dengan cara:

    node head ditunjukkan ke node baru tersebut. Prinsipnya adalah mengkaitkan

    node baru dengan head, kemudian head akan menunjuk pada data baru tersebut

    sehingga head akan tetap selalu menjadi data terdepan.

    void insertDepan(int databaru)

    {

    TNode *baru;

    baru = new TNode;

    baru->data = databaru;

    baru->next = NULL;

    if(isEmpty()==1)

    {

    head=baru;

    head->next = NULL;

    }

    else

    {

    baru->next = head;

    head = baru;

    }

    printf(Data masuk\n);

    }

    - List masih kosong (head=NULL)

    NULL

  • 10

    Head

    - Masuk data baru, misalnya 5

    f. Menambah node dibelakang

    Penambahan data dilakukan di belakang, namun pada saat pertama kali, node

    langsung ditunjuk oleh head. Penambahan di belakang membutuhkan pointer

    bantu untuk mengetahui node terbelakang. Kemudian, dikaitkan dengan node

    baru. Untuk mengetahui data terbelakang perlu digunakan perulangan

    void insertBelakang (int databaru)

    {

    TNode *baru,*bantu;

    baru = new TNode;

  • 11

    baru->data = databaru;

    baru->next = NULL;

    if(isEmpty()==1) {

    head=baru;

    head->next = NULL;

    }

    else {

    bantu=head;

    while(bantu->next!=NULL){

    bantu=bantu->next;

    }

    bantu->next = baru;

    }

    printf("Data masuk\n);

    }

    - List masih kosong (head=NULL)

    NULL

    Head

    - Masuk data baru, misalnya 20

  • 12

    g. Menambah node ditengah

    void menambah_ditengah()

    {

    TNode*baru, *bantu;

    int xdatabaru;

    layar_isi();

    baru = new TNode;

    gotoxy(20,11);cin>>baru->databaru;

    gotoxy(20,15);coutxdatabaru;

    baru->next=NULL;

    if (isEmpty()==1)

    {

    head=baru;

    head->next=NULL;

  • 13

    }

    else

    {

    bantu=head;

    while (bantu->next!=NULL && bantu->databaru!=xdatabaru)

    bantu=bantu->next;

    baru->next=bantu->next;

    bantu->next=baru;

    }

    }

    h. Menampilkan/membaca isi linked list

  • 14

    Linked list ditelusuri satu-persatu dari awal sampai akhir node. Penelusuran

    dilakukan dengan menggunakan pointer bantu, karena pointer head yang menjadi

    tanda awal list tidak boleh berubah/berganti posisi.

    Penelusuran dilakukan terus sampai ditemukan node terakhir yang menunjuk ke

    nilai NULL.

    Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan

    membaca isi datanya dengan menggunakan field next sehingga dapat saling

    berkait.

    Jika head masih NULL berarti data masih kosong!

    void tampil(){

    TNode *bantu;

    bantu = head;

    if(isEmpty()==0){

    while(bantu!=NULL){

    cout

  • 15

    typedef struct TNode

    { int databaru;

    TNode *next;

    }TNode;

    TNode*head;

    void init()

    {

    head=NULL;

    }

    int isEmpty()

    {

    if (head==NULL)

    return 1;

    else

    return 0;

    }

    void layar_isi();

    void menambah_didepan();

    void menambah_dibelakang();

    void menambah_ditengah();

    void baca_maju();

    void main()

    {

    int pil;

    do

  • 16

    {

    clrscr();

    gotoxy(13,2);cout

  • 17

    void menambah_didepan()

    {

    layar_isi();

    TNode *baru;

    baru=new TNode;

    gotoxy(20,11);cin>>baru->databaru;

    baru->next=NULL;

    if (isEmpty()==1)

    {

    head=baru;

    head->next=NULL;

    }

    else

    {

    baru->next=head;

    head=baru;

    }

    }gecth();

    void menambah_dibelakang()

    {

    TNode *baru, *bantu;

    layar_isi();

    baru = new TNode;

    gotoxy(20,11);cin>>baru->databaru;

    baru->next=NULL;

    if(isEmpty()==1)

    {

    head=baru;

  • 18

    head->next=NULL;

    }

    else

    {

    bantu=head;

    while (bantu->next!=NULL)

    bantu=bantu->next;

    bantu->next=baru;

    }

    }

    void menambah_ditengah()

    {

    TNode*baru, *bantu;

    int xdatabaru;

    layar_isi();

    baru = new TNode;

    gotoxy(20,11);cin>>baru->databaru;

    gotoxy(20,15);coutxdatabaru;

    baru->next=NULL;

    if (isEmpty()==1)

    {

    head=baru;

    head->next=NULL;

    }

    else

    {

    bantu=head;

    while (bantu->next!=NULL && bantu->databaru!=xdatabaru)

    bantu=bantu->next;

  • 19

    baru->next=bantu->next;

    bantu->next=baru;

    }

    }

    void baca_maju()

    {

    TNode *bantu;

    int brs=2,i;

    judul_lap();

    bantu=head;

    while (bantu!=NULL)

    {

    gotoxy(35,2+brs);cout

  • 20

    Flowchart :

    START

    pil != 5

    YES

    NO

    int pil;Menerima masukan pilihan;

    STOP

    pil ==1

    pil ==2

    pil == 3

    pil == 4

    Menerima Input Data yang disisipkan pertama

    Menerima Input Data yang disisipkan pertama

    Menerima Dua Input Data yang disisipkan pertama

    Menampilkan Linked list

    A

    B

    C

    D

    A

    Menambah Node Awal

    D

    B

    Menambah Node Di Akhir

    D

    B

    Mencari Data yang dimaksud

    kemudian menyisipkannya

    D

  • 21

    Hasil Compiler

  • 22

  • 23

    BAB III

    PENUTUP

    A. Kesimpulan

    Simpul adalah semacam tipe data yang kita buat sendiri sebagaimanan nama

    tipe yang telah disediakan oleh bahasa pemrograman.

    Info adalah tempat penyimpanan data dengan tipe yang berbeda-beda sesuai

    keinginan.

    Link adalah tempat penyimpanan alamat simpulnya (pointer).

    Linked list adalah sebuah struktur untuk menyimpan data yang bersifat

    dinamik

    Beberapa operasi dapat diterapkan pada linked list seperti

    sisip(insert),hapus(delete)

    Operasi-operasi yang ada pada linked list relatif lebih sulit jika dibandingkan

    dengan operasi-operasi pada struktur yang statis

    Null adalah suatu kondisi khusus dimana pointer itu belum di set dengan

    sebuah address tertentu, artinya pointer tidak mrnunjuk ke alamat manapun.

    B. Saran

    Mempelajari struktur data itu dipahami satu per satu dan jangan pernah berhenti

    untuk mencoba.

  • 24

    DAFTAR PUSTAKA

    Suarga, Drs, M.Sc.,M.Math.,Ph.D. 2012 Algoritma dan Pemrograman.

    Yogyakarta:

    Andi.Sjukani, Moh.2012 Struktur Data (Algoritma dan Struktur Data dengan

    C,C++. Jakarta: Mitra Wacana Media.

    http://andriansukses.blogspot.com/2014/01/makalah-struktur-data-linked-list.html