Kamis, 26 April 2018

senarai berantai

Struktur Data Jenis Senarai Berantai

(Linked List)

Oleh: Amira Najma



11.PENGERTIAN
Linked List atau dikenal juga dengan sebutan senarai berantai adalah struktur data yang terdiri dari urutan record data dimana setiap record memiliki field yang menyimpan alamat/referensi dari record selanjutnya (dalam urutan). Elemen data yang dihubungkan dengan link pada Linked List disebut Node. Biasanya didalam suatu linked list, terdapat istilah head dan tail.
·        Head adalah elemen yang berada pada posisi pertama dalam suatu linked list
·        Tail adalah elemen yang berada pada posisi terakhir dalam suatu linked list
22.JENIS - JENIS LINKED LIST
Ada beberapa jenis linked list, yaitu :
                                                               1.      Single Linked List
                                                               2.      Double Linked List
                                                               3.      Circular Linked List
                                                               4.      Multiple Linked List
·      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;

·      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 Mahasiswa
         {
                   char nama [25];
                   int usia;
                   struct mahasiswa *next, *prev;
          }
 *head, *tail;
·      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:
o   Circular Single Linked List
o   Circular Double Linked List
·      Multiple Linked List
Multiple Linked List merupakan suatu linked list yang memiliki lebih dar 2 buat variabel pointer.
Contoh :
33. Operasi - Operasi yang ada pada Linked List
·      Insert
Istilah Insert berarti menambahkan sebuah simpul baru ke dalamsuatu linked list.
·      IsEmpty
Fungsi ini menentukan apakah linked list kosong atau tidak.
·      Find First
Fungsi ini mencari elemen pertama dari linked list.
·      Find Next
Fungsi ini mencari elemen sesudah elemen yang ditunjuk now.
·      Retrieve
Fungsi ini mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu dikembalikan oleh fungsi.
·      Update
Fungsi ini mengubah elemen yang ditunjuk oleh now dengan isi dari sesuatu.
·      Delete Now
Fungsi ini menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah elemen pertama dari linked list (head), head akan berpindah ke elemen berikut.
·      Delete Head
Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.
·      Clear
Fungsi ini menghapus linked list yang sudah ada. Fungsi ini wajib dilakukan bila anda ingin mengakhiri program yang menggunakan linked list. Jika anda melakukannya, data-data yang dialokasikan ke memori pada program sebelumnya akan tetap tertinggal di dalam memori.
44. Algoritma dan contoh program LINKED LIST
a. Single Linked List
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
struct TNode{
    int data;
    TNode *next;
};
TNode *head, *tail;

void init(){
    head = NULL;
    tail = NULL;
}
int isEmpty(){
 if(tail == NULL) return 1;
 else return 0;
}
void insertDepan(int databaru){
  TNode *baru;
  baru = new TNode;
  baru->data = databaru;
  baru->next = NULL;
  if(isEmpty()==1){
          head=tail=baru;
          tail->next=NULL;
     }
  else {
         baru->next = head;
         head = baru;
  }
  cout<<"Data masuk\n";
}

void insertBelakang(int databaru){
 TNode *baru,*bantu;
 baru = new TNode;
 baru->data = databaru;
 baru->next = NULL;
 if(isEmpty()==1){
 head=baru;
 tail=baru;
 tail->next = NULL;
 }
 else {
  tail->next = baru;
  tail=baru;
 }
 cout<<"Data masuk\n";
}

void tampil(){
 TNode *bantu;
 bantu = head;
     if(isEmpty()==0){
          while(bantu!=NULL){
           cout<<bantu->data<<" ";
           bantu=bantu->next;
          }
     } else cout<<"Masih kosong\n";
  }

void hapusDepan(){
     TNode *hapus;
     int d;
     if (isEmpty()==0){
          if(head!=tail){
           hapus = head;
           d = hapus->data;
           head = head->next;
           delete hapus;
          } else {
           d = tail->data;
           head=tail=NULL;
          }
     cout<<d<<"terhapus";
     } else cout<<"Masih kosong\n";
}
void hapusBelakang(){
     TNode *bantu,*hapus;
     int d;
     if (isEmpty()==0){
      bantu = head;
          if(head!=tail){
               while(bantu->next!=tail){
                bantu = bantu->next;
               }
               hapus = tail;
               tail=bantu;
               d = hapus->data;
               delete hapus;
               tail->next = NULL;
            }else {
            d = tail->data;
             head=tail=NULL;
            }
      cout<<d<<" terhapus\n";
     } else cout<<"Masih kosong\n";
}
void clear()
{
        TNode *bantu,*hapus;
        bantu = head;
        while(bantu!=NULL)
        {
            hapus = bantu;
            bantu = bantu->next;
            delete hapus;
        }
        head = NULL;
      printf("CLEAR");
}

main()
{
    int pil,databaru;

    do
    {
        clrscr();
        cout<<endl<<endl;
        cout<<"   ==========================="<<endl;
        cout<<"   =  PROGRAM LINKED LIST    ="<<endl;
        cout<<"   ==========================="<<endl;
        cout<<"   = 1. Insert Depan         ="<<endl;
        cout<<"   = 2. Insert Belakang      ="<<endl;
        cout<<"   = 3. Delete Depan         ="<<endl;
        cout<<"   = 4. Delete Belakang      ="<<endl;
        cout<<"   = 5. Tampil Data          ="<<endl;
        cout<<"   = 6. Clear                ="<<endl;
        cout<<"   = 7. Exit                 ="<<endl;
        cout<<"   ==========================="<<endl;
        cout<<"   Masukan Pilihan : ";cin>>pil;
        switch (pil)
        {
            case 1: clrscr();{
                cout<<"Masukkan Data = ";
                cin>>databaru;
                insertDepan(databaru);
                break;
            }
            case 2: clrscr();{
                cout<<"Masukkan Data = ";
                cin>>databaru;
                insertBelakang(databaru);
                break;
            }
            case 3: clrscr();{
                hapusDepan();
                break;
            }
            case 4: clrscr();{
                hapusBelakang();
                break;
            }
            case 5: clrscr();{
                tampil();
                break;
            }
            case 6: clrscr();{
                clear();
                break;
            }
            case 7: {
            return 0;
             break;
            }
            default : clrscr();{
            cout<<"\n Maaf, Pilihan yang anda pilih tidak tersedia!";
            }

        }
        getch();
    }
    while(pil!=7);
}
b.Double Linked List
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
int pil;
void pilih();
void buat_baru();
void tambah_belakang();
void tambah_depan();
void hapus_belakang();
void hapus_depan();
void tampil();
void tambah_tengah();
void hapus_tengah();
struct node
{
char nama [20];
int umur;
float tinggi;
node *prev, *next;
};
node *baru, *head=NULL, *tail=NULL,*hapus,*bantu,*bantu2;
void main()
{
do
{
clrscr();
cout<<"MENU DOUBLE LINKEDLIST"<<endl;
cout<<"1. Tambah Depan"<<endl;
cout<<"2. Tambah Belakang"<<endl;
cout<<"3. Hapus Depan"<<endl;
cout<<"4. Hapus Belakang"<<endl;
cout<<"5. Tampilkan"<<endl;
cout<<"6. Tambah Tengah"<<endl;
cout<<"7. Hapus Tengah"<<endl;
cout<<"8. Selesai"<<endl;
cout<<"Pilihan Anda : ";
cin>>pil;
pilih();
} while(pil!=8);
}
void pilih()
{
if(pil==1)
tambah_depan();
else if(pil==2)
tambah_belakang();
else if(pil==3)
hapus_depan();
else if(pil==4)
hapus_belakang();
else if(pil==5)
tampil();
else if(pil==6)
tambah_tengah();
else if(pil==7)
hapus_tengah();
else
cout<<"selesai";
}
void buat_baru()
{
baru = new(node);
cout<<"input nama : ";cin>>baru->nama;
cout<<"input umur : ";cin>>baru->umur;
cout<<"input tinggi : ";cin>>baru->tinggi;
baru->prev=NULL;
baru->next=NULL;
}
void tambah_belakang()
{
buat_baru();
if(head==NULL)
{
head=baru;
tail=baru;
}
else
{
tail->next=baru;
baru->prev=tail;
tail=baru;
}
cout<<endl<<endl;
tampil();
}
void tambah_depan()
{
buat_baru();
if(head==NULL)
{
head=baru;
tail=baru;
}
else
{
baru->next=head;
head->prev=baru;
head=baru;
}
cout<<endl<<endl;
tampil();
}
void hapus_depan()
{
if (head==NULL)
cout<<"Kosong";
else if (head->next==NULL)
{
hapus=head;
head=NULL;
tail=NULL;
delete hapus;
}
else
{
hapus=head;
head=hapus->next;
head->prev=NULL;
delete hapus;
}
cout<<endl<<endl;
tampil();
}
void hapus_belakang()
{
if (head==NULL)
cout<<"Kosong";
else if (head->next==NULL)
{
hapus=head;
head=NULL;
tail=NULL;
delete hapus;
}
else
{
hapus=tail;
tail=hapus->prev;
tail->next=NULL;
delete hapus;
}
cout<<endl<<endl;
tampil();
}
void tampil()
{
if (head==NULL)
cout<<"Kosong";
else
{
bantu=head;
while(bantu!=NULL)
{
cout<<" nama : "<<bantu->nama;
cout<<" umur : "<<bantu->umur;
cout<<" tinggi : "<<bantu->tinggi<<endl;
bantu=bantu->next;
}
}
getch();
}
void tambah_tengah()
{
     int sisip;
     cout<<"Masukan Posisi Sisip Anda : ";cin>>sisip;
     bantu=head;
     for(int i=1;i<sisip-1;i++)
     {
       bantu=bantu->next;
     }
     buat_baru();
     bantu2=bantu->next;
     bantu->next=baru;
     baru->prev=bantu;
     baru->next=bantu2;
     bantu2->prev=baru;
}
void hapus_tengah()
{
  int sisip;
   cout<<"Masukan Posisi Sisip Anda : ";cin>>sisip;
   bantu=head;
   for(int i=1;i<sisip-1;i++)
   {
    bantu=bantu->next;
   }
   hapus=bantu->next;
   bantu2=hapus->next;
   bantu->next=hapus->next;
   bantu2->prev=bantu;
   delete hapus;
}

Selasa, 06 Maret 2018

Berhubungan dengan struktur data

Berhubungan dengan struktur data

Nama: Amira Najma
NIM   : A710170046
Kelas : B
Smtr  : 2 



1.http://wa2n.staff.uns.ac.id/2008/09/14/tahapan-membuat-program-dengan-baik/

Untuk bisa menghasilkan program yang baik memerlukan analisis yang baik pula, baik itu analisis sistem, stuktur data maupun analisis requirement, selin itu juga dipelukan persiapan-persiapan yang matang. Hal ini berlaku bagi siapapun, bahkan seorang programmer professional sekalipun.  Sedangkan tahapan apas aja untuk membuat program yang baik akan saya jelaskan dibawah.

Program memang sudah menjadi kebutuhan pokok bagi masyarakat IT. karena segala sesuatu yang dilakukan di dalam IT pastilah memerlukan program. Program yang paling sederhana sekalipun setidaknya memiliki 3 bagian:

Input – Masukan data.
Proses – pemrosesan input.
Output – keluaran program, kebutuhan yang kita harapkan.

Dalam membuat program, pemrograman adalah pokok dari proses pembuatan program itu sendiri namun pemrograman bergantung dari pemahaman persoalan, analisis sistem, perencanaan-perencanaan  dalam mendesain program itu sendiri.




2.http://s1tik.blogspot.co.id/2015/07/jenis-struktur-data.html


Jenis Struktur Data
1. Struktur Data Sederhana

a. Array (Larik).
adalah struktur data statik yang menyimpan sekumpulan elemen bertipe sama.
Setiap elemen diakses secara langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan keterurutan, misalnya: integer atau karakter. Banyaknya elemen larik harus sudah diketahui sebelum program dieksekusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur atau tipe larik lain. Nama lain dari Array adalah Larik, tabel, atau vektor.

b. Record (catatan)

adalah kumpulan data yang terdiri dari beberapa field(isian) dengan berbagai macam tipe data.

2. Struktur Data Majemuk

a. Linier.

Stack(tumpukan)
adalah list linier yang dikenali berupa elemen puncaknya(top), aturan penyisipan dan penghapusan elemennya tertentu (penyisipan selalu dilakukan "diatas"(top) dan penghapusan selalu dilakukan pada "top").

Karena aturan penyisipan dan penghapusan semacam itu, "top" adalah satu- satunya alamat tempat terjadinya operasi. Elemen yang paling akhir ditambahkan akan menjadi elemen yang akan dihapus. Dapat dikatakan elemen stack akan tersusun secara LIFO(last in first out).

Queue(antrian)

adalah list linier yang dikenali berupa elemen pertama(head) dan elemen terakhir(tail), dimana aturan penyisipan dan penghapusan elemennya didefinisikan sebagai penyisipan selalu dilakukan setelah elemen terakhir, penghapusan selalu dilakukan pada elemen pertama dengan kondisi satu elemen dengan elemen lainnya dapat diakses melalui informasi "next".

List dan Multi-List(Daftar)

adalah sekumpulan list linier yang dengan elemen yang bertype sama, yang memiliki keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian.

b. Non-Linier.

Binary-Tree(Pohon biner)

adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut sebagai akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner yang disebut sebagai sub-pohon kiri(left) dan sub-pohon kanan(right) dari pohon biner tersebut.

Pohon biner merupakan type yang sangat penting dari struktur data dan banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul yang paling banyak hanya memiliki dua buah anak, dan mungkin tidak punya anak.

Istilah- istilah yang digunakan sama dengan istilah pada pohon secara umum.

Graph(graf)

merupakan struktur data yang paling umum. Jika struktur linier memungkinkan pendefinisian keterhubungan sekuensial antar entitas data, struktur data tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data.

Banyak entitas- entitas data dalam masalah- masalah nyata secara alamiah memiliki keterhubungan langsung(adjacency) secara tak terbatas.


3.http://belajar-ilmu-informatik.blogspot.co.id/

Penjelasan penggunaan Struktur data pada perangkat lunak :
Dalam teknik pemograman, struktur data berarti tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna (user) maupun kolom yang digunakan untuk keperluan pemograman yang tidak tampak oleh pengguna.

Analisis & Desain Model
Analisis terhadap kebutuhan dapat menggunakan beberapa alat seperti :
1. Data Flow Diagram (DFD)
2. Entity Relationship Diagram (ERD)
3. State Transition Diagram (STD)

untuk menganalisis kebutuhan dibutuhkan suatu bekal dapat memudahkan penganalisisan suatu kebutuhan, bekal yang dibutuhkan ialah Data Dictionary.
Data Dictionary berisi gambaran objek data yang diperlukan dan akan dihasilkan oleh software. Diagram-diagram diatas mempunyai karakteristik masing masing.
DFD memberi gambaran bagaimana data berubah dalam sistem. ERD menggambarkan relasi antara objek data. STD menggambarkan bagaimana kerja sistem melalui kondisi dan kejadian yang menyebabkan data berubah, STD juga menggambarkan proses yang dilakukan karena kejadian tertentu.
Hasil  yang diperoleh dari proses penganalisian adalah model analisis yang kemudian menjadi bekal untuk melakukan desain.


4.https://stackoverflow.com/questions/15768669/data-layer-abstraction-for-windows-phone-and-windows-8-modern-apps
https://softwareengineering.stackexchange.com/questions/273590/abstraction-in-algorithms

Analogi abstaction pada windows phone.
Saya telah menetapkan bahwa memiliki perakitan "inti" per platform untuk kode portabel (viewmodel, pembantu, dll.) Dan perakitan terpisah per basis data / toko penyimpanan (SqlCe, Sqlite, dll.) Bahwa rakitan inti spesifik platform nampaknya bekerja Ini berarti kelas model saya masih didefinisikan dalam majelis DAL, namun setidaknya saya bisa menyediakan antarmuka umum sederhana (yang didefinisikan di setiap majelis DAL, sayangnya, karena kelas model DAL) yang masih memberi saya dukungan IQueryable.

Berkat "copy as link" dalam Visual Studio, menyiapkan majelis inti dan memastikan bahwa antarmuka layanan database umum sama untuk setiap perakitan DAL cukup mudah. Dengan # ifdef saya bahkan dapat menggunakan kembali banyak file kelas model DAL dan mengkompilasi atribut secara bersyarat, kode khusus database, dll. Yang memungkinkan saya untuk menggunakan "copy as link" untuk mereka juga.

public interface IDataService
{
IQueryable<ModelType1> ModelType1 { get; }
IQueryable<ModelType2> ModelType2 { get; }

void AddModelType1(ModelType1 item);
void RemoveModelType1(ModelType1 item);

void AddModelType2(ModelType2 item);
void RemoveModelType2(ModelType2 item);

void CreateDatabase();
void ResetDatabase();
}
The resulting map of references is kind of like this:

System.Data.Linq -> App.Data.SqlCe -> App.Core.WP -> App.WP
/               /
(some shared code)  (all shared code)
/                /
Sqlite -> App.Data.Sqlite -> App.Core.Win8 -> App.Win8
Tempat itu sama bersihnya seperti yang kuinginkan, tapi setidaknya sepertinya berhasil.



5.Hal 136

Terdapat dua pendekatan Umum yang bisa digunakan dalam merancang algoritma, yaitu pendekatan perancangan top down dan bottom-up,  pendekatan perancangan secara top-down dimulai dengan cara membagi algoritma yang kompleks menjadi satu atau lebih dari satu modul. Modul yang terbagi ini masih bisa duraikan lagi menjadi beberapa sub-modul, dan proses ini dilakukan berulang-ulang hingga kompleksitas modul yang diinginkan terpenuhi. Metode perancangan top-down merupakan bentuk perbaikan secara bertahap yang dimulai dengan modul paling atas kemudian secara bertahap menambah modul lain yang dipanggil.
Untuk pendekatan secara bottom-up, merupakan kebalikan dari top down.  Dimana modul ini dimulai dengan pembuatan modul paling dasar, kemudian dilanjutkan ke perancangan modul tingkat yang lebih tinggi.
Dari kedua pendekatan diatas, yaitu  top-down dan bottom-up, apakah strategi top down / bottom-up,  tentu tergantung pada aplikasi yang ditangani. Pendekatan top-down  mengkuti perbaikan secara bertahap dengan menguraikan algoritma ke dalam modul secara terkelola. Sementara pendekatan bottom-up mendefinisikan modul terlebih dahulu baru kemudian mengelompokan beberapa , modul secara bersama untuk membentuk modul baru tingkat lebih tinggi. Pendekatan top-down sangat bagus dalam hal kemudahan membuat dokumentasi modul, menghasilkan uji kasus, implementasi kode, dan debugging.  Namun, terdaopat kekurangan karena sub-modul dianalisis dalam sebuah isolasi tanpa memperhatikan komuikasi dengan modul lain sehingga mengabaikan konsep penyembunyian informasi.




6.Algoritma :

Inisialisaikan bil1, bil2, oprs, hasil
Input nilai a, b
Pilih salah satu operasi dari (+),(-),(x),(:)
Jika anda memilih operasi (+), maka hasil = a + b
Jika anda memilih operasi (-), maka hasil = a - b
Jika anda memilih operasi (x), maka hasil = a * b
Jika anda memilih operasi (:), maka hasil = a / b
Cetak hasil

Flowchart




7.https://azisnurc.wordpress.com/2014/12/28/penggunaan-notasi-big-o-untuk-menganalisa-efisiensi-algoritma/

Notasi

Pernyataan “f(x) adalah O(g(x))” sebagaimana didefinisikan sebelumnya, biasa ditulis f(x) = O(g(x)) Pernyataan ini adalah penyalahgunaan notasi. Persamaan dari dua buah fungsi tidak dinyatakan. Properti O(g(x)) tidaklah simetrik: Karena alasan ini, beberapa penulis lebih memilih menggunakan notasi himpunan dan menulis Menganggap O(g) sebagai himpunan dari fungsi fungsi yang didominasi oleh g. Dalam penggunaan yang lebih rumit, , O( ) dapat muncul pada tempat yang berbeda di dalam sebuah persamaan, bahkan beberapa kali untuk masing-masing sisi.

Misalnya, pernyataan berikut benar untuk (n + 1)2 = n2 + O(n) nO(1) = O(en)

Maksud dari pernyataan diatas adalah :

Untuk setiap fungsi yang memenuhi untuk setiap O( ) pada sisi kiri, terdapat fungsi-fungsi yang memenuhi masing-masing O( ) pada sisi kanan, melakukan substitusi untuk semua fungsi-fungsi ini ke dalam persamaan menyebabkan kedua sisi menjadi sama. Misalnya, persamaan ke-3 diatas berarti: “Untuk setiap fungsi f(n) = O(1), terdapat fungsi-fungsi g(n) = O(en) sehingga nf(n) = g(n)”

Minggu, 25 Februari 2018

Struktur data dan jenis

STRUKTUR DATA

A.   Pengertian

Struktur  Data  adalah  tata cara untuk melakukan penyimpanan, penyusunan, dan pengaturan data agar data dapat digunakan secara efisien. Dalam bahasa pemrograman struktur data  adalah  tata letak kolom-kolom data, baik yang terlihat oleh pengguna maupun yang tidak terlihat oleh pengguna, yang tidak terlihat tersebut hanya digunakan dalam proseses program saja.

B.   Kegunaan

1.)  Memudahkan dalam memahami dan memecahkan masalah  algoritma
2.)  Meningkatkan  efisiensi  memori  saat program  komputer  sedang  bekerja
3.)  Proses reservasi memori yang tidak perlu akan diminimalisasi

C.   Jenis-jenis

1.    Struktur data sederhana , meliputi:
a.    Array (Larik)
Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang  bertipe sama, misalnya tipe sederhana, tipe terstruktur dan lain-lain. Setiap  elemen  dapat diakses langsung melalui indeksnya. Indeks larik harus berupa  tipe data yang berurutan dan banyaknya elemen larik harus diketahui dahulu sebelum program dieksekusi.

b.    Record (catatan)
Catatan adalah kumpulan data yang terdiri dari beberapa field (isian) dengan berbagai macam tipe data.

2.    Struktur data majemuk, meliputi:
a.    Linear

Queue (Antrian)
Queue (Antrian) adalah list linear yang dikenali elemen pertama (head) dan elemen terakhirnya (tail). Aturan penyisipan selalu dilakukan setelah elemen terakhir, dan aturan penghapusan selalu dilakukan pada elemen pertama. Antar elemen satu dengan yang lain dapat diakses melalui informasi next.




Stack (Tumpukan)
Stack (Tumpukan) adalah list linear yang dikenali elemen puncaknya (top). Aturan penyisipan selalu dilakukan diatas top, dan aturan penghapusan selalu dilakukan pada top. Elemen yang di tambahkan paling terakhir itulah elemen yang akan dihapus. Elemen stack tersusun secara LIFO (Last In First out).

List dan Multi-List (Daftar)
List dan Multi-List (Daftar) adalah sekumpulan list linear dengan elemen yang bertype sama dan memiliki urutan tertentu. Setiap elemennya memiliki 2 bagian.

b.    Non Linear
Binary tree (Pohon Biner)
Binary tree (Pohon Biner) adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut akar dan dua buah himpunan lain yang disjoint yang disebut sub pohon kiri (left) dan sub pohon kanan (right). Karakteristik pohon biner adalah setiap simpul paling banyak hanya memiliki dua buah anak dan mungkin tidak punya anak.

Graph (Graf)
Graph (Graf) adalah struktur data yang paling umum. Struktur graph memungkinkan keterhubungan tak terbatas antara entitas-entitas data.



Referensi;