Kamis, 19 Juli 2012

Nama            : Fanny Riskawanti
NRP              : 6311255
Alamat          : Bandung
Kelas            : 1 TI-7
Matakuliah     : Struktur Data
Dosen           : Dadan Nurdin Bagenda
Kampus         : PKN & STIMIK LPKIA

Graph

Graph adalah mengunjungi simpul-simpl dengan cara sistematik


Binary Tree



Binary Tree adalah struktur data yang hampir mirip juga dengan Linked List untuk
menyimpan koleksi dari data. 


contoh :


Tree


  1. Tree adalah struktur data yang non cilcular yang memiliki sifat khusus. 
dan tree juga merupakan salah satu bentuk implementasi  banyak linked list yang biasanya digunakan untuk menggambarkan hubungan yang hirarkis antara elemen-elemen yang ada. 

 contoh algoritma dari Tree: 



contoh :

#include "iostream.h"
#include  "string.h"
#include "conio.h"

struct simpulpohon
{
  simpulpohon *induk;
  simpulpohon *kiri;
  simpulpohon *kanan;
  char data;
};

class pohonbiner
{
  private:
  simpulpohon *akar;

  int tambah(simpulpohon *orangtua, simpulpohon *baru);
  void tampil(simpulpohon *simpul);

  public:
  pohonbiner();
  int tambah(char data);
  void tampil();

};

void main()
{
  clrscr();
  char data[] = "CARKDUPBENXZS";

  pohonbiner pohon;

  for (int i = 0; i < strlen(data); i++)
  pohon.tambah(data[i]);

  cout<<"Data ke Pohon Biner : "<<endl;
  for (int x = 0; x < strlen(data); x++)
   cout<<data[x];

  cout<<endl;
  cout<<endl;
  cout<<"Hasil Pohon Biner :"<<endl;
  pohon.tampil();
  getch();
}

pohonbiner::pohonbiner()
{
  akar = NULL;
}

int pohonbiner::tambah(char data)
{
  simpulpohon *simpul;

  simpul= new simpulpohon;

  simpul->kiri = NULL;
  simpul->kanan = NULL;
  simpul->induk = NULL;
  simpul->data = data;

  if (akar == NULL)
  {
    akar = simpul;
    return(1);
  }
  else
     return(tambah(akar,simpul));
}

int pohonbiner::tambah(simpulpohon *orangtua, simpulpohon *baru)
{
  if (baru->data ==orangtua->data)
   {
    delete baru;
    return(0);
   }

  else if (baru->data < orangtua->data)
   {
    if (!orangtua->kiri)
     {
      orangtua->kiri = baru;
      baru->induk = orangtua;
     }
    else
      return(tambah(orangtua->kiri,baru));
   }

  else
   {
     if (!orangtua->kanan)
     {
       orangtua->kanan = baru;
       baru->induk = orangtua;
     }
     else
       return(tambah(orangtua->kanan,baru));
    }
  return(1);
}


void pohonbiner::tampil()
{
  tampil(akar);
  cout<<endl;
}

void pohonbiner::tampil(simpulpohon *simpul)
{
  if (simpul)
  {
     if (simpul->kiri) tampil(simpul->kiri);

     cout<<simpul->data;

     if (simpul->kanan) tampil(simpul->kanan);
  }
}

Double LinkedList Non-Circular



Definisi dari Double linked list yang non circular
         Double Linked List Non Circular adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1 field pointer yang menunjuk pointer berikutnya  dan 1 field menunjuk pointer sebelumnya serta sebuah field yang berisi data untuk node tersebut.

Double LinkedList Circular


Double Linked List Circula 
•          Double: artinya field pointer-nya terdiri dari dua buah dan dua arah, yaitu prev dan next
•          Linked List: artinya node-node tersebut saling terhubung satu sama lain.
•          Circular: artinya pointer next dan prev-nya menunjuk ke dirinya sendiri
          Setiap node pada linked list mempunyai field yang berisi data dan pointer ke node 
       berikutnya & ke node sebelumnya
           •     Untuk pembentukan node baru, mulanya pointer next dan prev akan menunjuk ke
                 dirinya sendiri
           •        Jika sudah lebih dari satu node, maka pointer prev akan menunjuk ke node
                 sebelumnya, dan pointer next akan menunjuk ke node sesudahnya.
           
  Deklarasi node

Dibuat dari struct berikut ini:
typedef struct TNode{
                                int data;
                                TNode *next;
                                Tnode *prev;
                                   };
Pembentukan node baru

      •     Digunakan keyword new yang berarti mempersiapkan sebuah node baru berserta 
          alokasi memorinya.
   TNode *baru;
   baru = new TNode;
   baru->data = databaru;
   baru->next = baru;
   baru->prev = baru;
·                              Penambahan data di depan

            Penambahan node baru akan dikaitan di node paling depan, namun pada saat pertama kali (data masih kosong), maka penambahan data dilakukan pada head nya.
Pada prinsipnya adalah mengkaitkan data baru dengan head, kemudian head akan menunjuk pada data baru tersebut sehingga head akan tetap selalu menjadi data terdepan.  Untuk menghubungkan node terakhir dengan node terdepan dibutuhkan pointer bantu.

Single LinkedList Non-Circular


single linked list non circular
Linked List
 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.

Bentuk Node 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.

Deklarasi Node
typedef struct TNode{
int data;
TNode *next;
};
Penjelasan:
• Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode
• Setelah pembuatan struct, buat variabel head yang bertipe pointer dari TNode yang berguna sebagai kepala linked list.