Anda di halaman 1dari 17

TOPIK 1

2 - SD: 1.1 Konsep Dasar Struktur Data


2-3 menit

Pengertian Struktur Data

  cara penyimpanan, pengorganisasian dan pengaturan data di dalam media penyimpanan komputer agar dapat
digunakan secara efisien.

Apa itu Data?

Data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan,
direkam atau direpresentasikan dalam bentuk angka, karakter, gambar, suara, atau simbol yang dapat digunakan
untuk dijadikan informasi. Data juga sering didefinisikan sebagai informasi yang belum terolah.

Contoh:  10  29  11  31  12  32  13  30  14  30  15  29

  Dapatkah anda memahami contoh data di atas?

Tipe Data

  Tipe data adalah himpunan semua nilai yang mungkin dari suatu data.

Macam-macam Tipe Data

Secara umum tipe data di dalam bahasa pemrograman bisa dikelompokkan menjadi berbagai jenis. Berikut ini
beberapa jenis tipe data yang umum digunakan:

1.Tipe Data Sederhana (Simple)

2.Tipe Data Terstruktur (Structured)

3.Tipe Data Penunjuk (Pointer)

1.  TIPE DATA SEDERHANA (ORDINARY)

Tipe data sederhana (Ordinary) adalah tipe data yang sudah ada dan dijadikan standar dalam bahasa
pemrograman tertentu. Isi dari tipe data sederhana ini adalah data-data tunggal.
c. Character / Char

Merupakan tipe data yang digunakan untuk menampung data berupa karakter. Karakter ini hanya boleh terdiri
dari 1 digit, berupa huruf ’a’, ’A’, ’x’, atau bilangan ’0’, ’1’, ’5’, ’9’ atau berupa karakter-karakter khusus
lainnya, seperti ’#’, ’@’, ’&’, ’$’ dsb.

d.Boolean

  Tipe data boolean adalah tipe data yang biasanya digunakan untuk menentukan kondisi suatu variabel bernilai
benar (true) atau salah (false).

 Jadi tipe data ini hanya berisi nilai True atau False, tetapi beberapa bahasa pemrograman menggunakan nilai 1
untuk kondisi benar (true) dan nilai 0 untuk kondisi salah (false).

1.2 Tipe data terstruktur

TIPE DATA TERSTRUKTUR

Pada tipe data terstruktur setiap perubah bisa menyimpan lebih dari sebuah nilai data. Masing-masing nilai data
disebut komponen. Karakteristik data bertipe tersetruktur ditentukan berdasarkan cara penstrukturan dan cara
mengakses masing-masing komponen.

Macam-macam Tipe Data Terstruktur :

a. Array (Larik)
•Array adalah tipe data yang berisi beberapa data yang ditampung dalam satu variabel yang memiliki tipe data yang
sama (homogen).   
•Masing masing data yang tertampung dalam sebuah array akan ditandai menggunakan indeks.
•Array dapat dibuat lebih dari satu dimensi, misalnya untuk meng-gambarkan matriks perlu menggunakan array dua
dimensi, dengan indeks baris dan kolom.
•Akses data individu pada sebuah array dengan menyebut indeksnya.

b. Record (Rekaman)

•Record adalah koleksi dari obyek-obyek yang tipenya tidak harus sama (heterogen) dan akses terhadap obyek tersebut
dilakukan dengan menyebut nama obyeknya.

•Obyek-obyek tersebut disebut dengan field.

  Contoh:
c. String

•Tipe data string digunakan untuk menampung sebuah atau beberapa karakter sekaligus dapat berupa angka, huruf
atau karakter khusus lainnya. Dalam bahasa pemrograman C, variabel string merupakan sebuah array karakter atau
sebuah pointer yang menunjuk ke sebuah variabel char yang diakhiri dengan karakter null.

.3 Tipe Data Pointer

 Pointer secara harafiah dapat diartikan sebagai penunjuk.


 Tipe data pointer merupakan tipe data yang berisikan alamat memori dimana data disimpan.
 Variabel yang memiliki tipe data pointer adalah variabel yang menyimpan alamat suatu memory bukan
menyimpan suatu nilai.

Untuk mendeklarasikan sebuah pointer kosong pada memory diguna-kan perintah *malloc(size_t size)
TOPIK 2
TOPIK 3
3.1 linked list Lanjutan
Linked list (senarai berantai)  adalah sejumlah node yang dihubungkan secara linier dengan bantuan pointer.

Node dialokasikan secara dinamik

Tipe data node : struct

Jumlah pointer pengait node :

—1(satu): single linked list

—2 (dua): double linked list

—>2 (lebih dari dua): multiple

Ada 4 macam struktur Linked List :

1.Linear Singly-Linked List

Linked List Lurus dengan pointer tunggal. Jadi dalam satu struktur simpul hanya ada satu elemen atau field atau variabel
yang bertipe pointer yang isinya adalah alamat simpul berikutnya atau next node.

list yang hanya bisa ditelusuri dari satu arah

Ilustrasi :

2.Linear Doubly-Linked List

Linked List Lurus dengan pointer ganda, yaitu ada dua buah pointer. jenis linked list yang terdiri dari 3 bagian yaitu isi
informasi node, pointer yang menunjuk node berikutnya (next) dan pointer yang menunjuk node sebelumnya (previous).

Kelebihan dari double linked list adalah memungkinkan list ditelusuri dari dua arah. Sehingga, dapat melakukan proses
searching yang fleksibel dibandingkan dengan linear linked list.

ilustrasi :

3.Circular Singly-Linked List

Circular Singly Linked List dimana pengembangan dari linear linked list. Struktur pembentuk nodenya sama. Hanya saja
tidak ada nilai NULL pada node tail melainkan pointer pada node tail akan merujuk pada node head sehingga
menciptakan efek melingkar ‘sesuai arah jarum jam’.
4.Circular Doubly-Linked List

Circular Doubly Linked list adalah linked list dengan menggunakan pointer, dimana setiap node memiliki 3 field, yaitu 1
field pointer yang menunjuk pointer berikutnya (next), 1 field menunjuk pointer sebelumnya (prev), serta sebuah field
yang berisi data untuk node tersebut dengan pointer next dan pre-nya menunjuk ke dirinya sendiri secara circular.
sehingga menciptakan efek melingkar baik menurut ‘arah jarum jam’ maupun ‘arah kebalikannya’.
TOPIK 4
4.1 operasi-operasi linked list

 Insert

  Istilah Insert berarti menambahkan sebuah simpul baru ke dalam suatu 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 berikutnya.

 Delete Head

  Fungsi ini menghapus elemen yang ditunjuk head. Head berpindah ke elemen sesudahnya.

 Clear

  Fungsi ini menghapus linked list yang sudah ada.

4.2 contoh-contoh

Contoh deklarasi tipe node

   struct nodemhs {
  char  nama[10];

  float  ip;

  struct nodemhs  *next;

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

Contoh deklarasi pointer penunjuk Awal LL

  struct nodemhs  *head;

Pointer head digunakan untuk mengakses data dalam LL.

Akses harus dimulai dari node pertama (sequential)

Pointer head perlu diinisialisasi

head = NULL;

Pembentukan node baru

struct nodemhs  *p, *curr;

   //deklarasi variabel pointer

p = (struct nodemhs*)malloc(sizeof…);

strcpy (p->nama, “Dewi”);

p->ip = 4.0;

p->next = NULL;
TOPIK 5
5.1 stack
•Stack adalah konsep penyusunan data dalam bentuk tumpukan data dengan konsep LIFO ( Last In First Out ).

operas-operasi pada stack

1. Push  : Digunakan untuk menambah elemen pada stack pada tumpukan paling atas  

fungsinya :

•Untuk memasukkan elemen ke stack, selalu menjadi elemen teratas stack.

•Tambah satu (increment) nilai Top of STACK terlebih dahulu setiap kali ada penambahan elemen stack, asalkan stack
masih belum penuh, kemudian isikan nilai baru ke stack berdasarkan indeks Top of Stack setelah ditambah satu
(diincrement).

2. Pop        : Digunakan untuk mengambil elemen pada tumpukan paling atas

fungsinya :

•Untuk mengambil elemen teratas dari stack.

•Ambil dahulu nilai elemen teratas stack dengan mengakses top of stack, tampilkan nilai yang akan diambil
terlebih dahulu, baru diincrement nilai Top of Stack sehingga jumlah elemen stack berkurang. 

Void Pop(Stack* S)

 { int X;

  if (IsEmpty(*S))

 {

  printf(“ \nStack Tidak Bisa Di POP !” )

  X = -99999l

 }

  Else

 {

  X = (*S).Data[(*S).TOP];

   (*S).TOP--;

  return X;
}

3. Clear     : Digunakan untuk mengosongkan stack  

4. IsEmpty :  Fungsi yang digunakan untuk mengecek apakah stack sudah kosong  

fungsinya :

•Untuk memeriksa apakah stack sudah penuh ?

•Dengan cara memeriksa Top of Stack, jika sudah sama dengan MAX_STACK-1 maka full, jika belum (masih lebih kecil
dari MAX_STACK-1) maka belum full.

  Int IsFull(Stack S)

 {

  if (S.TOP == (MAX -1))

  return 1;

  else

  return 0;

 }

5. IsFull  : Fungsi yang digunakan untuk mengecek apakah stack sudah penuh  

fungsinya :

•Untuk memeriksa apakah stack masih kosong ?

•Dengan cara memeriksa Top of STACK, jika masih -1 maka berarti stack masih kosong .

•Int IsEmpty(Stack S)

   {

  if (S.TOP == -1)

  return 1;

  else

  return 0;

 }
TOPIK 6
Queue/ antrian
•Queue atau antrian adalah barisan elemen yang apabila ditambah maka penambahannya berada di posisi belakang dan
jika dilakukan pengambilan elemen dilakukan di elemen paling depan (front).

•   Bersifat FIFO ( First In First Out ).

•   Benda yang pertama masuk ke dalam queue akan menjadi benda  pertama yang dikeluarkan dari queue.

operasi-operasi queue

•Enqueue  : Digunakan untuk menambah elemen pada queue di posisi belakang

 Untuk menambahkan elemen ke dalam antrian, penambahan elemen selalu ditambahkan di elemen paling
belakang. dan Penambahan elemen selalu menggerakkan variabel Tail dengan cara increment counter Tail.  

•Dequeue  : Digunakan untuk mengambil elemen queue di posisi depan

  untuk menghapus elemen terdepan/pertama dari Antrian. Dengan cara mengurangi counter Tail dan menggeser
semua elemen antrian kedepan.  

•IsEmpty  : Fungsi yang digunakan untuk mengecek apakah queue sudah kosong  

 Untuk memeriksa apakah Queue masih kosong ? Dengan cara memeriksa nilai Tail, jika Tail = -1 maka berarti
Queue masih kosong. Kita tidak memeriksa Head, karena head adalah tanda untuk kepala (elemen pertama
dalam antrian) yang tidak akan berubah-ubah.

•IsFull   : Fungsi yang digunakan untuk mengecek apakah queue sudah penuh  

Untuk memeriksa apakah Queue sudah penuh ? Dengan cara memeriksa nilai Tail, jika Tail >= MAX-1 maka
full, jika belum (masih lebih kecil dari MAX_STACK-1) maka belum full.

•Front : pointer bantu yang digunakan untuk menunjuk element yang   paling depan.

•Rear : pointer bantu yang digunakan untuk menunjuk element yang paling   belakang.
TOPIK 7

Anda mungkin juga menyukai