Rabu, 26 Maret 2014

Struktur Data SLLNC (Power Point)










































Sabtu, 22 Maret 2014

Makalah Struktur Data Single Linked List Non circular Menambah dibelakang



BAB I
PENDAHULUAN
1.    Pendahuluan
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 :
  • List linier (Linked List) dan variasinya
  • Multilist
  • Stack (Tumpukan)
  • Queue (Antrian)
  • Tree ( Pohon )
  • Graph ( Graf )
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.
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.
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
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
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;
    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
  
Head
-          Masuk data baru, misalnya 3
Untitled.jpg
Tampilan keluar
-          Datang data baru, misalnya 5 ( Penambahan didepan )
tampilan keluar
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;
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 10
Tampilan keluar
-          Datang data baru, misalnya 1 ( Penambahan dibelakang )
Tampilan keluar
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);cout<<"Tambah Tengah Setelah angka - ";cin>>xdatabaru;
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  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
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<<bantu->data<<" ";
bantu=bantu->next;
}
printf(“\n”);
} else printf(“Masih kosong\n“);
}
B.     Program (source code) single linked list non circular
Contoh Programnya :
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
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
  {
    clrscr();
    gotoxy(13,2);cout<<"PILIHAN MENU";
    gotoxy(5,3);cout<<"------------------------------------";
    gotoxy(5,4);cout<<"º 1. Tambah Data Di Depan  º";
    gotoxy(5,5);cout<<"º 2. Tambah Data Di Akhir   º";
    gotoxy(5,6);cout<<"º 3. Tambah Data Di Tengah º";
    gotoxy(5,7);cout<<"º 4. Tampilkan                       º";
    gotoxy(5,8);cout<<"--------------------------------------";
    gotoxy(5,10);cout<<"Pilihan Anda = ";cin>>pil;
    switch (pil)
    {
    case 1 : menambah_didepan(); break;
    case 2 : menambah_dibelakang(); break;
    case 3 : menambah_ditengah(); break;
    case 4 : baca_maju(); break;
   }
  } while (pil!=5);
}
void layar_isi()
{
gotoxy(7,10);cout<<"\nMasukkan nilai--> ";
}
void judul_lap()
    {
 gotoxy(35,1);cout<<"======================================== ";
  gotoxy(43,2);cout<<"TAMPILAN DATA !!!!! ";
  }
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;
    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);cout<<"Tambah Tengah Setelah angka - ";cin>>xdatabaru;
  baru->next=NULL;
  if (isEmpty()==1)
  {
    head=baru;
    head->next=NULL;
  }
  else
  {
    bantu=head;
    while (bantu->next!=NULL && bantu->databaru!=xdatabaru)
      bantu=bantu->next;
    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<<i;
    gotoxy(35,2+brs);cout<<bantu->databaru;
    brs++;
    bantu=bantu->next;
    }
  gotoxy(35,3+brs);cout<<"----------------------------------------";
  gotoxy(35,4+brs);cout<<"ENTER UNTUK MELANJUTKAN !!!";getch();
  }
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
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://Google.com. dikutip tanggal 14 Mei 2013.