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. 

Single Linked List circular

Single linked list adalah sebuah node yang dihubungkan secara linier dengan bantuan pointer

  1. linked list selalu memiliki pointer petunjuk yang selalu menunjuk pada awal dari list yang      di sebut head.
  2. linked list juga selalu memliki pointer petunjuk untuk menunjuk pada akhir dari list yang disebut TAIL, kecuali untuk jenis circular.

  1. Single linked list cilcular adalah Single Linked List yang pointer nextnya menunjuk pada
    dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node,
    maka pointer next pada node terakhir akan menunjuk ke node
    terdepannya. 
Pengertian Linked List Cilcular :
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar 

Array


Jenis-jenis array :
 Array 1 dimensi
-> Menggunakan array 1 dimensi : saat kita menggunakan 1 aksi ( baris saja atau kolom saja)
Array 2 dimensi
-> Menggunakan array 2 dimensi : saat kita membutuhkan atau akan membuat kolom dan baris, pada saat menggunakan table atau matriks yang membutuhkan x & y
Definisi dari Array :
Kumpulan Variabel
  Tipe datanya sama
Dibedakaan dari indeks

Array merupakan koleksi data dimana setiap elemen memakai nama dan tipe yang sama serta setiap elemen diakses dengan membedakan indeks array-nya.

Contoh Program :
# include<constream.h>
Void main()
{
clrscr();
Int a[3];
for(int x=0; x=2;x++)
cin>>a[x];

for(x=0;x<=2;x++)
cout<<a[x]<<endl;
getch();

Penjelasan :
Nama array = a
Ada 1 array
Ada 4 variabel = a(0-2), x
data yang di input dari o-2 tapi bias di isi 3


untuk Array 2 Dimensi
contoh program :

#include
void printArray(int[][3]);
main()
{ int matrik1[2][3] = {{1, 2, 3},{4, 5, 6}};
int matrik2[2][3] = {1, 2, 3, 4, 5};
int matrik3[2][3] = {{1, 2},{4}};
printArray (matrik1);
printArray (matrik2);
printArray (matrik3);
return 0; }
void printArray (int a[][3])
{ int i,j;
for (i=0; i<=1; i++)
{ for (j=0; j<=2; j++)

cout<<“%d”,a[i][j]<<endl;
cout<<“n”<<endl;
}
}


Bila program diatas dijalankan, akan mucul hasil :
123
456
123
450
120
400

pengertian pointer


*Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu


variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam


memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain, variabel pertama


dikatakan menunjuk ke variabel kedua


Operator Pointer ada dua, yaitu :


  •      Operator &


Operator & bersifat unary (hanya memerlukan satu operand saja).


Operator & menghasilkan alamat dari operandnya.


  •      Operator *


Operator * bersifat unary (hanya memerlukan satu operand saja).


Operator * menghasilkan nilai yang berada pada sebuah alamat.



Contoh program :
#include "stdio.h"
#include "conio.h"

void main() 
                    {
                     int x, y; /* x dan y bertipe int */

                    int *px; /* px pointer yang menunjuk objek */

                   clrscr();

                    x = 87;

                   px = &x; /* px berisi alamat dari x */

                    y = *px; /* y berisi nilai yang ditunjuk px */

                   cout<<“Alamat x =”<<&x <<\n”;

                   cout<<“Isi px = \n”, px);

                   cout<<“Isi x = \n”, x);

                   cout<<“Nilai yang ditunjuk oleh px = \n”, *px);

                   cout<<“Nilai y = \n”, y);

                   getch();

                   }

Definisi Struktur Data


Struktur data adalah cara menyimpan data di dalam komputer agar bisa dipakai secara efisien Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan dalam bentuk tulisan atau simbol. 
       ada 2 jenis tipe data yaitu:

a. Tipe data sederhana adalah tipe data yang sudah ada dan dijadikan standar dalam bahasa pemrograman tertentu.
           Isi dari tipe data sederhana ini adalah data-data tunggal
           contohnya seperti integer, real, bolean,karakter


      b. Tipe data sederhana majemuk , seperti string,record

Gambar Pemetaan