Senin, 29 Februari 2016

Pertemuan 1 - (Introduction to Linked List)

Tujuan Pembelajaran :
  • Menjelaskan konsep data struktur dan kegunaannya.
  • Mengaplikasikan penggunaan data struktur.


POINTER 

adalah penunjuk dari suatu alamat yang berada dalam memory.

dengan adanya pointer kita dapat memanipulasi data yang berada pada alamat tertentu dalam memory. berbeda dengan variabel dimana jika kita menyimpan suatu data maka akan disimpan secara acak oleh sistem, sedangkan pointer kita dapat menunjuk letak penyimpanannya.


STRUCTURE 


adalah user-defined data type yang bisa menyimpan berbagai macam tipe data (heterogen) secara bersamaan. Struct terdiri dari beberapa anggota yang disebut dengan member atau variabel.

berbeda dengan array yang hanya dapat menampung tipe data yang sejenis.

  • Memberikan nilai pada structure

untuk memberikan nilai pada struct dapat digunakan operator . (dot) untuk mengakses anggota dari suatu struct.

contoh : 

struct mhs{

char nama[100];
char nim[10];
int age;

};

mhs binus;

strcpy(binus.nama,"Renaldo");
strcpy(binus.nim,"1901559520");
binus.age = 19;

  • Nested Structure 

adalah struct yang bertingkat dimana terdapat struct didalam sebuah struct.

contoh :



struct profile {

  int   age;
  char  name[100];
};
struct student {
  struct profile p;
  int  score;
  char grade;
};

----------------------------------------------------------------------------


DATA STRUKTUR

adalah dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan. secara efisien.

Berikut adalah contoh - contoh data struktur :


  1.  Array
  2. Linked Lists
  3. Queues
  4. Stacks
  5. Binary Trees
  6. Hash Tables

ARRAY

adalah kumpulan data yang bertipe sejenis (Homogen). Isi dari array disimpan pada memori yang berurutan dan tersusun berdasarkan index.

array index dimulai dari nol.

  • Pendeklarasian Array 

contoh :

char nama[100];

  • Pengaksesan Array

contoh :

nama[2] = 'F';
nama[3] = 'E';
nama[4] = 'R';



LINKED LIST 

adalah tipe data struktur yang terdiri dari urutan data records yang tersusun secara sekuensial, saling sambung-menyambung dan terbatas.

linked list saling terhubung dengan bantuan variabel pointer.

member dalam linked list disebut node. Node biasanya berupa struct yang memiliki beberapa field.



didalam linked list  biasa terdapat istilah head dan tail.Head adalah elemen yang berada pada posisi pertama suatu linked list. Kebalikannya, tail adalah elemen yang  berada pada posisi terakhir suatu linked list.

berikut adalah contoh Linked List :



  • Single Linked List
adalah Linked List yang menggunakan sebuah variabel pointer saja untuk menyimpan banyak data. Hanya ada satu pointer yang menghubugkan setiap node (satu arah "next").

single linked list dibagi menjadi 2 :
- Single linked list circular
- Single linked list non circular.

cara untuk mendeklarasikan Single Linked List :
- Buat Struct
- Deklarasi variable pointer
- Alokasikan memori
- Isi data

  • Single Linked List : Insert
Melakukan penyisipan data pada linked list, dilakukan dengan cara menghapus rantai hubungan terlebih dahulu lalu memberikan angka baru dan selanjutnya memberikan rantai hubungan baru.






  • Single Linked List : Delete
untuk menghapus suatu nilai kita harus temukan terlebih dahulu lokasi node yang akan kita hapus, hilangkan dahulu node tersebut lalu hubungkan kembali node nya.

ada dua kondisi yang harus kita perhatikan :
- apakah node yang akan kita hapus berada di Head. 
- apakah node yang akan kita hapus berada tidak berada di Head.

contoh :

struct tnode *curr = head;


}
// if x is in head node
if ( head->value == x ) {
  head = head->next;
  free(curr);


// 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);

}









LINKED LIST vs ARRAY

ARRAY 
- Kumpulan data
- Statis
- Dapat diakses secara random berdasarkan index
- Letaknya berurutan

LINKED LIST 
- Kumpulan node
- Dinamis
- Harus diakses secara berurutan
- Letaknya random


QUEUE

anggota yang masuk pertama adalah anggota yang akan keluar pertama. Atau biasa dikenal dengan istilah First In First Out (FIFO).

ada beberapa jenis Queue :
- Circular Queue : Queue yang kedua ujungnya saling terhubung.
- Priority Queue : Terdapat suatu anggota/elemen yang diprioritaskan.




STACKS

stacks dapat direpresentasikan sebagai array yang bertumpuk. Dimana setiap anggota yang masuk pertama adalah anggota yang akan keluar terakhir. Atau biasa dikenal dengan istilah First In Last Out (FILO).

BINARY TREES 

adalah kumpulan elemen yang disebut dengan node. Setiap elemen mempunyai pointer kiri dan pointer kanan.








MEMORY ALLOCATION

jika anda butuh untuk mengalokasikan memori pada saat run time, anda dapat menggunakan keyword malloc di C/C++.

untuk mende-alokasikannya anda dapat menggunakan keyword free.


Nama : Renaldo Akhira Ruslan 
Nim : 1901509520