Tuesday 27 February 2018

Pertemuan 2 - Linked Lists Implementation - 2101696973 - Rifqi Amru Bakti

Nama : Rifqi Amru Bakti
NIM    : 2101696973

Session 2
Linked Lists Implementation

Linked List : 
Linked lists merupakan sebuah struktur data yang digunakan untuk menyimpan sejumlah objek data biasanya secara terurut sehingga memungkinkan penambahan, pengurangan, dan pencarian atas elemen data yang tersimpan dalam linked lists dilakukan secara lebih efektif. 

Linked lists memiliki beberapa implementasi yang bekerja secara berbeda-beda, implementasi tersebut adalah : 

 - Singly Linked List
   Singly linked list adalah bentuk tipe data struktur linked list dimana tiap node     dalam listnya menyimpan suatu data dan pointer atau referensi ke node             selanjutnya yang ada di list tersebut. Untuk mengimplementasikan single           linked list, hanya pointer atau referensi pada node pertama di list yang harus     disimpan. Node terakhir pada single linked list tidak menunjuk pada apapun       atau NULL.
Image result for single linked list




contoh Kodingan Singly Linked List : 

Mendefinisikan List

struct tnode 
{
int value;
struct tnode *next;
};


struct tnode *head = 0;

Insert List

struct tnode *node =
(struct tnode*) malloc(sizeof(struct tnode));
node->value = x;
node->next  = head;

head = node;

Delete List


struct tnode *curr = head;

// if x is in head node
if ( head->value == x ) {
head = head->next;
free(curr); }
// if x is in tail node
else if(tail->value == x){
while(curr->next!=tail) curr = curr->next;
free(tail); tail = curr;
tail->next = NULL;
}
// if x is not in head node, find the location
else {
while ( curr->next->value != x ) curr = curr->next;
struct tnode *del = curr->next;
curr->next = del->next;
free(del);
}

 - Doubly Linked List
   Doubly Linked List adalah bentuk tipe data struktur Linked List yang memiliki     dua variabel pointer, pointer yang menunjuk ke node berikutnya dan pointer       yang menunjuk ke node sebelumnya. Setiap head dan tailnya juga tidak             menunjuk pada apapun atau bisa dibilang menunjuk NULL.









Contoh Koding : 

List

struct tnode 
{
int value;
struct tnode *next;
struct tnode *prev;
};

struct tnode *head = 0;

struct tnode *tail = 0;

Insert

struct tnode *node =
(struct tnode*) malloc(sizeof(struct tnode));
node->value = x;
node->next  = NULL;
node->prev  = tail;
tail->next  = node;

tail = node;

Delete

free(head);
head = NULL;

tail = NULL;
(Mendelete satu node)

head = head->next;
free(head->prev);
head->prev = NULL;
(Node yang di delete node Head)

 - Polynomial Representation
   Dalam Polynomial Representation dapat diasumsikan bahwa tiap linked list         menyimpan dua nilai yang berbeda-beda. Dalam bentuk polinom dibawah,         setiap nilai dalam node memiliki nilai asli dan pangkat variabelnya.

Dimisalkan polinom yang didapat adalah 6x^3 + 9x^2 + 7x + 1 .
dalam polinom tersebut 6, 9, dan 1 adalah koefisiennya sedangkan pangkat koefisien tersebut adalah 3, 2, 1, dan 0 karena mereka tidak memiliki nilai x.







 - Multi Linked List
   Multi Linked List merupakan bentuk unik linked list dimmana tiap node               memiliki pointer kepada satu atau lebih node dalam linked list tersebut.









 - Circular Linked List
   Circular Linked List merupakan bentuk linked list dimana node terakhir(tail)       menunjuk kepada node pertama(head). Oleh karena ini, node dalam Circular     Linked List tidak ada yang menunjuk NULL.

Ada dua jenis Circular Linked List, List tersebut ialah : 
 > Circular Single Linked List






 > Circular Doubly Linked List


 - Header Linked List

   Header Linked List adalah suatu bentuk linked list dimana ada sebuah node       yang dijadikan sebagai "Header" di awal dari list. Bentuk dari Header Linked       List dapat dilihat pada gambar dibawah, Header node berada pada awal list       tersebut.








Rifqi Amru Bakti-2101696973

Tuesday 20 February 2018

Pertemuan 1 - Pointer, Array & Introduction to Data Structure - 2101696973 - Rifqi Amru Bakti

Nama : Rifqi Amru Bakti
NIM    : 2101696973

Session 1
Pointer, Array & Introduction to Data Structure

Array
Array adalah suatu kumpulan data yang memiliki tipe data yang sama(homogen).
Array disimpan dari memori menggunakan index yang dimulai dari 0.
- Dimensi maximal suatu Array adalah 256.

Jenis-jenis Array
- One Dimensional Array
  > Syntax = typename[size]
    Declaration : 
int boi[2];
    Accessing :
boi[0] = 2
boi[1] = 7
 boi[2] = 11
- Two Dimensional Array
  > Syntax = typename[size1][size2]
    Declaration :
int boi[3][6];
    Accessing :
boi[0][2] = 6
boi[2][1] = 9
 boi[1][5] = 12
 boi[2][4] = 15
- Multi Dimensional Array
  > Syntax = typename[size1][size2][size3][...]
    Declaration : 
int boi[4][3][7][10];
    Accessing : 
boi[0][2][2][9] = 25
boi[2][1][6][0] = 69
 boi[3][0][0][6] = 87 
boi[2][1][3][8] = 96

Menyimpan Nilai Array

Nilai Array dapat disimpan dengan melakukan tiga cara, cara tersebut yaitu dengan : 

> Inisialisasi Array

  • Contoh : 
                    int boi[5] = {0,1,3,50,69};


> Menginput nilai elemen secara langsung

  • Contoh :

int i;

           for(i=0;i<10;i++)
                   scanf("%d",&boi[i]);

> Memasukkan Nilai ke Array

  • Contoh : 

                  int i,boi1[10],boi2[10];
           for(i=0;i<10;i++)
               boi2[i]=boi1[i];


Operasi dalam Array

Ada beberapa operasi yang dapat dilakukan pada Array,
Operasi tersebut ialah : 
- Traversal (Penelusuran Data)
- Insertion (Pemasukan Data)
- Searching (Pencarian Data)
- Deletion (Penghapusan Data)
- Merging (Penyatuan Data)
- Sorting (Pengurutan Data)

Pointer
Pointer adalah suatu tipe data yang nilainya mengacu pada nilai lain yang tersimpan dalam memori komputer dengan menggunakan alamatnya.
- Pointer memiliki nilai maximal sebanyak 12.

Dua operator paling penting yang digunakan dalam tipe Pointer adalah : 

> "&" -> Operator yang menunjukkan alamat("alamat dari")
> "*" -> Operator yang menunjukkan isi nilai dan variabel("isi nilai dari...")
Declaration : 

int a=20;
int *p=&a;

printf("angka = %d\n",*p);

Hasil : 
angka = 20

Data Structure
Data Structure adalah bentuk penyusunan data yang berada di dalam memori komputer atau memori HDD.

Tipe-tipe Data Structure :

- Arrays
  > Kumpulan elemen data yang mirip.
  > Elemen data memiliki tipe data yang sama.
Image result for data structure Arrays
- Linked Lists
  > Data Structure yang dinamis dikarenakan tiap elemen yang ada dapat             ditambahkan atau dihapuskan dari manapun.
  > Tiap elemen yang ada dalam Linked Lists dipanggil dengan Node.
Image result for data structure linked listImage result for data structure linked list

- Queues
  > Elemen yang dimasukkan pertama akan dikeluarkan pertama juga, Struktur       dibentuk sesuai urutan pemasukan data.
  > Elemen dimasukkan pada ujung akhir(Rear) dan dikeluarkan lewat ujung           depan(Front).
  > Istilah FIFO(First In First Out) bermaksud pertama masuk keluar pertama.
Image result for data structure QueuesImage result for data structure Queues

- Stacks
  > Stacks dapat dipanggil dengan Array Linear.
  > Tiap stack memiliki variable TOP di dalamnya.
  > Struktur ini berjalan sebaliknya dari Queues, dimana yang pertama masuk         akan dikeluarkan terakhir dan yang terakhir masuk dikeluarkan pertama.
  > Stacks memiliki istilah LIFO(Last In First Out) dan FILO(First In Last Out)           LIFO bermaksud terakhir masuk keluar pertama dan FILO bermaksud                 sebaliknya.
Image result for data structure StacksImage result for data structure Stacks

- Binary Trees
  > Data Structure yang terbentuk dari kumpulan elemen yang dipanngil               nodes.
  > Tiap node memiliki pointer kiri, pointer kanan, dan sebuah elemen data.
Image result for data structure binary treeImage result for data structure binary tree

- Hash tables
  > Hash table merupakan salah satu struktur data yang digunakan dalam               penyimpanan data sementara.
  > Hash table menggunakan suatu teknik penyimpanan sehingga waktu yang         dibutuhkan untuk penambahan data (insertions), penghapusan data                   (deletions), dan pencarian data (searching) relatif sama dibanding struktur         data atau algoritma yang lain.


Data Type
Data Type atau tipe data adalah sekumpulan objek dan sekumpulan operasi  yang yang beraksi pada objek - objek tersebut. 

Contohnya, tipe data int terbentuk dengan : 

  • Objek : 0,+1,-1,+2,-2, dll
  • Operasi : +,-,/,*,%, dll

Abstract Data Type
ADT atau Abstact Data Type merupakan tipe data yang disusun dengan cara seperti ini: spesifikasi dari object dan spesifikasi dari operasi objek dipisahkan dari perwakilan objek dan implementasi dari operasi.

Contoh ADT : 

objects : an integer x
functions:
bool is_zero() if ( x == 0 ) return TRUE else return FALSE
bool equal(y) if ( x == y ) return TRUE else return FALSE
void set(y) x = y
void add(y) x = x + y
int get () return x

Summary
- Pointer merupakan tipe data yang  nilainya menunjukkan nilai lain yang telah    tersimpan dalam memori komputer menggunakan alamatnya.
- Array merupakan kumpulan elemen data yang mirip.
- Index suatu Array dimulai dari 0.
- Data Structure merupakan bentuk penyusunan data yang berada di dalam      memori komputer atau memori HDD.
- Tipe-tipe data Structure yang digunakan adalah : Arrays, Linked list,              Queues, Stacks, Binary Tree, dan Hash Tables
- Abstract Data Type(ADT) adalah tipe data yang disusun dengan cara ini:        spesifikasi dari object dan spesifikasi dari operasi objek dipisahkan dari              perwakilan objek dan implementasi dari operasi.


Rifqi Amru Bakti-2101696973