Rangkuman Struktur Data:
Nama: Try permadi
NRP: 6311018
Alamat: Jln.Panyileukan
Mata kuliah: T.Struktur Data
Nama Dosen: Dadan Nurdin Bagenda
Kampus : PKN STIMIK LPKIA BANDUNG
Gambar Pemetaan:
CONTOH SOURCE CODE SINGLE LINKED LIST:
Contoh source code single linked list linear:
#include <iostream>
using namespace std;
struct Node{
int data;
Node* next;
};
Node* NodePtr;
PENJELASAN:
Linked List: Adalah koleksi data item yang tersusun dalam sebuah barisan secara Linear, dengan
penyisipan dan pemindahan dapat di lakukan dalam semua tempat di Linked List tersebut.
Single Linked List: Adalah Sebuah Linked List yang menggunakan sebuah variabel pointer saja
untuk menyimpan banyak data dengan metode Linked List, suatu daftar isi yang saling berhubungan.
Linked List Circural: Double / Single Linked List yang simpul terakhirnya menunjuk ke simpul awal
dan simpul awal nya menunjuk ke simpul akhir atau dapat disebut Linked List yang dibuat seakan-akan
merupakan sebuah lingkaran dengan titik awal dan titik akhir saling bersebelahan jika Linked List
tersebut masih kosong ilustrasi Circural Linked List.
STRUKTUR DATA:
Struktur data adalah cara menyimpan atau
merepresentasikan data dari dalam komputer agar bisa dipakai secara efisien
Sedangkan data adalah representasi dari fakta dunia nyata.
Fakta atau keterangan tentang kenyataan
yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara,
gambar, sinyal atau symbol.
Secara garis besar
type data dapat dikategorikan menjadi :
1. Type data sederhana
a.
Type data sederhana tunggal, misalnya Integer, real, boolean dan karakter
b.
Type data sederhana majemuk, misalnya String
2. Struktur Data, meliputi
a.
Struktur data sederhana, misalnya array dan record
b.
Struktur data majemuk, yang terdiri dari
Linier : Stack, Queue, serta List dan Multilist
Non Linier : Pohon Binary dan Graph
STRUKTUR DATA LINEAR:
Struktur data linear adalah struktur data yang menggambarkan hubungan
tentang elemen-elemen yang berdekatan. Terdiri dari :
1. ARRAY : a. dimensi satu (vektor matriks)
b. dimensi dua (matriks)
c. multi
dimensi
STRUKTUR DATA NON LINEAR:
Penyelesaian
persamaan non linear adalah penentuan akar-akar persamaan non linear. Dimana
akar sebuah persamaan f(x) =0 adalah nilai-nilai x yang menyebabkan nilai f(x)
sama dengan nol. Dengan kata lain akar persamaan f(x) adalah titik potong
antara kurva f(x) dan sumbu X. Dalam hal ini saya menggunakan metode Tabel
untuk menyelesaikan persamaan ini.
Secara
sederhana, untuk menyelesaikan persamaan non linier dapat dilakukan
dengan menggunakan metode table atau pembagian area.Dimana untuk x = [ ] b a, atau x di antara a dan b dibagi sebanyak N bagian dan pada masing-masing bagian dihitung nilai f(x) sehingga di peroleh tabel :
dengan menggunakan metode table atau pembagian area.Dimana untuk x = [ ] b a, atau x di antara a dan b dibagi sebanyak N bagian dan pada masing-masing bagian dihitung nilai f(x) sehingga di peroleh tabel :
Dari tabel ini,
bila ditemukan f(xk)=0 atau mendekati nol maka dikatakan
bahwa xk adalah penyelesaian persamaan f(xk)=0.Bila tidak ada f(xk) yang sama dengan nol, maka dicari nilai f(xk) dan f(xk+1) yang berlawanan tanda, bila tidak ditemukan maka dikatakan tidak mempunyai akar untuk x = [ ], ,b a dan bila ditemukan maka ada 2 pendapat untuk menentukan akar persamaan, yaitu :
bahwa xk adalah penyelesaian persamaan f(xk)=0.Bila tidak ada f(xk) yang sama dengan nol, maka dicari nilai f(xk) dan f(xk+1) yang berlawanan tanda, bila tidak ditemukan maka dikatakan tidak mempunyai akar untuk x = [ ], ,b a dan bila ditemukan maka ada 2 pendapat untuk menentukan akar persamaan, yaitu :
- Akar persamaan ditentukan oleh nilai mana yang lebih dekat, bila |f(xk)| ≤ |f(xk+1)| maka akarnya xk, dan bila |f(xk+1)|<|f(xk)| maka akarnya xk+1.
- Akarnya perlu di cari lagi, dengan range x = [ xk,xk+1].
FIFO AND LIFO:
FIFO
(first in first out) memiliki pengertian Masuk Pertama, Keluar Pertama, yang
abstak dalam cara mengatur dan manipulasi data yang relatif terhadap waktu dan
prioritas. Ungkapan ini menjelaskan prinsip dari teknik pemrosesan atau
melayani permintaan bertentangan dengan memesan proses pertama datang,
pertama-dilayani (FCFS) perilaku: apa yang masuk pertama adalah menangani
pertama, apa yang datang di depan menunggu sampai pertama selesai, dll
LIFO (Last In First Out) memiliki pengertian terakhir masuk, pertama keluar. Dalam ilmu komputer dan teori queueing ini merujuk kepada cara item disimpan dalam beberapa jenis struktur data yang diproses. Dengan definisi, dalam sebuah struktur LIFO linear daftar, elemen dapat ditambahkan atau diambil dari satu akhirnya, yang disebut "atas". LIFO struktur dapat digambarkan dengan contoh yang sempit, ramai lift dengan pintu kecil . Ketika lift mencapai tujuan, yang terakhir untuk mendapatkan orang harus pertama untuk turun.
LIFO (Last In First Out) memiliki pengertian terakhir masuk, pertama keluar. Dalam ilmu komputer dan teori queueing ini merujuk kepada cara item disimpan dalam beberapa jenis struktur data yang diproses. Dengan definisi, dalam sebuah struktur LIFO linear daftar, elemen dapat ditambahkan atau diambil dari satu akhirnya, yang disebut "atas". LIFO struktur dapat digambarkan dengan contoh yang sempit, ramai lift dengan pintu kecil . Ketika lift mencapai tujuan, yang terakhir untuk mendapatkan orang harus pertama untuk turun.
SINGLE LINKED LIST:
• Single Linked List adalah pointer next nya
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:
•
Single : artinya field pointer-nya
hanya satu buah saja dan satu arah.
•
Linked List : artinya node-node
tersebut saling terhubung satu sama lain.
• Circular : artinya pointer next-nya
akan menunjuk pada dirinya sendiri sehingga berputar
•
Non Circural : artinya node-node tersebut saling terhubung satu sama
lain.
DOUBLE LINKED LIST:
Double
adalah elemen-element yang dihubungkan dengan dua pointer dengan satu element
dan list dapat melintas baik di depan atau belakang.
Element
double linked list terdiri dari tiga bagian:
·
Bagian
data informasi
·
Pointer
next yang menunjuk ke element berikutnya
·
Pointer
prev yang menunjuk ke element sebelumnya
Untuk menunjuk head
dari double linked list, pointer prev dari element pertama menunjuk NULL,
Sedankan untuk menunjuk tail, pointer next dari element terakhir menunjuk NULL.
Contoh membuat TDA
(Tipe Data Abstrak) dari Double Linked Circural List tersebut:
•
Pengertian:
• Double
: artinya field pointer-nya dua buah dan dua arah, ke node sebelum dan
sesudahnya.
•
Linked
List : artinya node-node tersebut saling terhubung satu sama lain.
•
Non
Circular : artinya pointer prev dan next-nya akan menunjuk pada NULL.
•
Circural:
pointer next dan prev nya
menunjuk kedirinya sendiri secara circular.
ARRAY:
Array merupakan koleksi data dimana setiap elemen memakai nama dan tipe
yang sama serta setiap elemen diakses dengan membedakan indeks array-nya.
Berikut adalah contoh variable bernama c yang mempunyai lokasi memori yang
semuanya bertipe int.
C[0] -45
C[1] 6
C[2] 0
C[3] 72
C[4] 1543
C[5] 43
C[6] 4
Masing-masing nilai dalam setiap lokasi mempunyai identitas berupa nama c dan nomor indeks yang dituliskan di dalam tanda kurung ‘[..]’. sebagai contoh, 72 adalah nilai dari c[3].
Deklarasi Array
Variable array dideklarasikan dengan mencantumkan tipe dan nama variable yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Dengan demikian, deklarasi untuk variablearray c di atas adalah :
int c[7];
Perlu diperhatikan bahwa C++ secara otomatis menyediakan lokasi memori yang sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Nilai suatu variablearray dapat juga diinisialisasi secara langsung pada saat deklarasi, misalnya;
Int c[7] = {-45, 0, 6, 72, 1543, 43, 4}
Berarti setiap lokasi memori dari variable array c langsung diisi dengan nilai-nilai yang dituliskan didalam tanda kurung kurawal.
Banyaknya lokasi memori dapat secara otomatis disediakan sesuai degan banyaknya nilai yang akan dimasukkan, seperti contoh berikut yang tentunya membuat variable array dengan 10 lokasi memori:
Int x []={10, 15 12, 5, 13, 9, 6, 17, 25, 31};
Untuk memperjelas gambaran anda tentang array perhatikan contoh aplikasi variable array, yaitu program untuk menghitung jumlah setiap elemen dalam suatu array.
C[0] -45
C[1] 6
C[2] 0
C[3] 72
C[4] 1543
C[5] 43
C[6] 4
Masing-masing nilai dalam setiap lokasi mempunyai identitas berupa nama c dan nomor indeks yang dituliskan di dalam tanda kurung ‘[..]’. sebagai contoh, 72 adalah nilai dari c[3].
Deklarasi Array
Variable array dideklarasikan dengan mencantumkan tipe dan nama variable yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Dengan demikian, deklarasi untuk variablearray c di atas adalah :
int c[7];
Perlu diperhatikan bahwa C++ secara otomatis menyediakan lokasi memori yang sesuai dengan yang dideklarasikan, dimana nomor indeks selalu dimulai dari 0. Nilai suatu variablearray dapat juga diinisialisasi secara langsung pada saat deklarasi, misalnya;
Int c[7] = {-45, 0, 6, 72, 1543, 43, 4}
Berarti setiap lokasi memori dari variable array c langsung diisi dengan nilai-nilai yang dituliskan didalam tanda kurung kurawal.
Banyaknya lokasi memori dapat secara otomatis disediakan sesuai degan banyaknya nilai yang akan dimasukkan, seperti contoh berikut yang tentunya membuat variable array dengan 10 lokasi memori:
Int x []={10, 15 12, 5, 13, 9, 6, 17, 25, 31};
Untuk memperjelas gambaran anda tentang array perhatikan contoh aplikasi variable array, yaitu program untuk menghitung jumlah setiap elemen dalam suatu array.
POINTER:
Pointer
(variabel penunjuk) adalah suatu variabel yang berisi alamat lokasi suatu
memori tertentu. Jadi isi dari variabel pointer merupakan alamat dari lokasi
memori yang digunakan untuk menyimpan data dan bukan nilai data itu sendiri.
Misalnya X adalah suatu variabel biasa yang berisi nilai karakter ‘J’. X bukan
variabel pointer. Nilai dari X ini oleh kompiler C++ akan diletakkan di suatu lokasi memori
tertentu. Nilai ini dapat diakses jika diketahui alamat memorinya. Untuk
mengetahui alamat memori yang digunakan oleh variabel X dalam menyimpan nilai
datanya dapat diketahui dengan ungkapan &X. Alamat
tersebut dapat ditulis dengan mengambil sebuah variabel lagi yang disebut
dengan variabel pointer, misalnya: Alamat_X = &X. Alamat_X adalah variabel
pointer karena variabel ini menunjuk ke lokasi memori di mana nilai data dari
variabel X disimpan.
PENAMBAHAN DATA:
Penambahan
node baru akan dikaitan di node paling depan, namun pada daat pertama kali
(data masih kosong), maka penambahan data dilakukan dengan cara : node head
ditunjukan ke node baru tersebut
Prinsipnya
adalah mengkaitkan node baru dengan head, kemudian head akan menunjuk pada data
baru tersebut sehingga head akan tetap sekaku menjadi data terdepan.
Menambah
Node Di Belakang
Penambahan
dilakukan di belakang, namin pada saat pertama kali, node langsung ditunjuk
oleh head, membutuhkan pointer bantu untuk mengetahui node terbelakang kemudian
dikaitkan dengan node baru, perlu digunakan perulangan.
PENGHAPUSAN DATA:
Menghapus
Node Di Depan
Penghapusan
node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka
harus dilakukan penggunaan suatu pointer lain (hapus) yang digunakan untuk
menunjuk node yang akan dihapus, barulah kemusian menghapus pointer menggunakan
perintah delete. Sebelum data terdepan terhapus, terlebih dahulu head harus
menunhuk ke alamat berikutnya agar list tidak putus, jika head masih NULL
berarti data masih kosong.
Menghapus
Node Di Belakang
Membutuhkan
pointer bantu dan hapus. Pointer hapus digunakan untuk menunjuk node yang akan
dihapus, Pointer bantu untuk menunjuk node sebelum node yang akan dihapus yang
akan menjadi node yang terakhir. Pointer bantu digunakan untuk menunjuk ke
nilai NULL selalu bergerak sampai sebelum node yang akan dihapus kemudian
pointer hapus diletakan setelah pointer bantu. Selanjutnya pointer hapus akan
menunjuk ke NULL.
TREE:
Tree merupakan salah satu bentuk
struktur data non linear yang menggambarkan hubungan yang bersifat hirarkis
antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node
dengan satu elemen khusus yang disebut ROOT
dan node lainnya terbagi menjadi himpunan-himpunan yang saling tidak
berhubungan satu sama lainnya (subtree)
BINARY TREE:
Binary tree adalah tree dengan syarat bahwa tiap
node bisa kosong atau maksimal memiliki dua subtree dan kedua subtree harus
terpisah.
Sesuai dengan definisi tersebut, maka tiap node
dalam binary tree hanya boleh memiliki paling banyak dua child dan Binary tree
mempunyai berbagai jenis, yaitu :
1. Full
Binary tree
Full
Binary Tree adalah binary tree yang tiap nodenya (kecuali leaf) memiliki dua child
dan tiap subtree harus mempunyai panjang
path yang sama
2. Complete
binary Tree
Complete
Binary Tree Mirip dengan full binary tree, namun tiap subtree boleh memiliki panjang path yang berbeda.node
(kecuali leaf) memiliki 0 atau 2 child
3. Skewed
Binary Tree
Skewed
Binary Tree adalah binary tree yang semua node nya (kecuali leaf) hanya
memiliki satu child.
GRAPH:
Graph adalah kumpulan
noktah (simpul) di dalam bidang dua dimensi yang dihubungkan dengan
sekumpulan garis (sisi).Graph dapat digunakan untuk
merepresentasikan objek-objek diskrit dan hubungan antara objek-objek tersebut.
Representasi visual dari graph adalah dengan menyatakan objek
sebagai noktah, bulatan atau titik (Vertex), sedangkan hubungan antara objek
dinyatakan dengan garis (Edge).
G =
(V, E)
Dimana
G
= Graph
V
= Simpul atau Vertex, atau Node, atau Titik
E
= Busur atau Edge, atau arc
Bila ingin melihat contoh coding program bisa di download disni:
http://www.mediafire.com/?0w99ucbodh4wbBila ingin melihat contoh coding program bisa di download disni: