Selasa, 27 Februari 2018

2-Linked List Implementation-2101632055-YOEL JORDANIO IMANUEL

Linked List Implementation 



PEMBUATAN SINGLE LINKED LIST
Deklarasi node 
Dibuat dari struct berikut ini: 

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 haed yang bertipe pointer dari 
  TNode yang berguna sebagai kepala linked list.

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; 


SINGLE LINKED LIST CIRCULAR MENGGUNAKAN HEAD 

- Dibutuhkan satu buah variabel pointer: head 
- Head akan selalu menunjuk pada node pertama 

Deklarasi Pointer Penunjuk Kepala Single Linked List 
Manipulasi linked list tidak bisa dilakukan langsung ke node yang dituju, 
melainkan harus melalui node pertama dalam linked list. Deklarasinya sebagai berikut: 

TNode *head; 

Fungsi Inisialisasi Single LinkedList 
void init(){ 
head = NULL; 

Function untuk mengetahui kosong tidaknya Single LinkedList 
int isEmpty(){ 
if(head == NULL) return 1; 
else return 0; 

PENAMBAHAN DATA 

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. 

void insertDepan(int databaru){ 
TNode *baru,*bantu; 
baru = new TNode; 
baru->data = databaru; 
baru->next = baru; 

if(isEmpty()==1){ 
head=baru; 
head->next=head; 
else { 
bantu = head; 
while(bantu->next!=head){ 
bantu=bantu->next; 
baru->next = head; 
head = baru; 
bantu->next = head; 
cout<<"Data masuk\n"; 

Penambahan data di belakang Penambahan data dilakukan di belakang, namun pada saat pertama kali data langsung ditunjuk pada head-nya. Penambahan di belakang lebih sulit karena kita membutuhkan pointer bantu untuk mengetahui data terbelakang, kemudian dikaitkan dengan data baru. Untuk mengetahui data terbelakang perlu digunakan perulangan.

void insertBelakang (int databaru) 
TNode *baru,*bantu; 
baru = new TNode; 
baru->data = databaru; 
baru->next = baru; 
if(isEmpty()==1){ 
head=baru; 
head->next=head; 
else { 
bantu = head; 
while(bantu->next != head){ 
bantu=bantu->next; 
bantu->next = baru; 
baru->next = head; 
cout<<"Data masuk\n"; 

“Bagaimana dengan penambahan di tengah?” 

MENAMPILKAN DATA 

Function untuk menampilkan isi single linked list 
void tampil(){ TNode *b; 
b = head; 
if(isEmpty()==0) 
do 
cout<data<<" "; 
b=b->next; 
while(b!=head); 
cout<<<"Masih kosong\n"; 

- Function di atas digunakan untuk menampilkan semua isi list, di mana linked list ditelusuri satu-persatu dari awal node sampai akhir node. Penelusuran ini dilakukan dengan menggunakan suatu variabel node bantu, karena pada prinsipnya variabel node head yang menjadi tanda awal list tidak boleh berubah/berganti posisi. 
- Penelusuran dilakukan terus sampai node terakhir ditemukan menunjuk ke head lagi. Jika belum sama dengan head, maka node bantu akan berpindah ke node selanjutnya dan membaca isi datanya dengan menggunakan field next sehingga dapat saling berkait. 
- Jika head masih NULL berarti data masih kosong! 

PENGHAPUSAN DATA 
Function untuk menghapus data terdepan 

void hapusDepan () 
{ TNode *hapus,*bantu; 
if (isEmpty()==0) 
int d; 
hapus = head; d = head->data; 
if(head->next != head){ 
bantu = head; 
while(bantu->next!=head){ 
bantu=bantu->next; 
head = head->next; 
delete hapus; 
bantu->next = head; 
}else{ 
head=NULL; 
cout<<<" terhapus\n"; 
else cout<<"Masih kosong\n"; 

- Function di atas akan menghapus data teratas (pertama) yang ditunjuk oleh head  pada linked list 
- Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus ditampung dahulu pada variabel hapus dan barulah kemudian menghapus variabel hapus dengan menggunakan perintah delete. 
- Sebelum data terdepan dihapus, head harus ditunjukkan ke data sesudahnya  terlebih dahulu sehingga data setelah head lama akan menjadi head baru (data terdepan yang baru). 
- Jika head masih NULL maka berarti data masih kosong! 

Penghapusan data di belakang: 

void hapusBelakang() 
{ TNode *hapus,*bantu; 
if (isEmpty()==0) 
int d; 
hapus = head; 
if(head->next == head){ 
head = NULL; 
else 
bantu = head; 
while(bantu->next->next != head){ 
bantu = bantu->next; 
hapus = bantu->next; 
d = bantu->data; 
bantu->next = head; 
delete hapus; 
cout<<<" terhapus\n"; 
else 
cout<<"Masih kosong\n"; 

- Membutuhkan pointer bantu dan hapus. 
- Pointer hapus digunakan untuk menunjuk node yang akan dihapus, dan pointer bantu digunakan untuk menunjuk node sebelum node yang dihapus. 
- Pointer bantu akan digunakan untuk menunjuk ke nilai NULL. 
- Pointer bantu akan selalu bergerak bersama dengan pointer hapus tapi letak pointer bantu harus selalu dibelakang pointer hapus. 

Function untuk menghapus semua elemen Linked List 

void clear(){ TNode *bantu,*hapus; 
bantu = head; 
while(bantu->next!=head){ 
hapus = bantu; 
bantu = bantu->next; 
delete hapus; 
head = NULL; 

SINGLE LINKED LIST MENGGUNAKAN HEAD DAN TAIL 
- Dibutuhkan dua buah variabel pointer: head dan tail 
- Head akan selalu menunjuk pada node pertama, sedangkan tail akan 
selalu menunjuk pada node terakhir. 

Inisialisasi LinkedList 

TNode *head, *tail; 

Fungsi Inisialisasi LinkedList 

void init(){ 
head = NULL; 
tail = NULL; 

Function untuk mengetahui kosong tidaknya LinkedList 

int isEmpty(){ 
if(tail == NULL) return 1; 
else return 0; 

PENAMBAHAN DATA 

Pengkaitan node baru ke linked list di depan 
Penambahan data baru di depan akan selalu menjadi head. 

void insertDepan(int databaru){ 
TNode *baru; 
baru = new TNode; 
baru->data = databaru; 
baru->next = baru; 
if(isEmpty()==1){ 
head=baru; 
tail=baru; 
head->next=head; 
tail->next=tail; 
else { 
baru->next = head; 
head = baru; 
tail->next = head; 
cout<<"Data masuk\n"; 

Penambahan Data di belakang Pada penambahan data di belakang, data akan selalu dikaitkan dengan tail, karena tail terletak di node paling belakang. Setelah dikaitkan dengan node baru, maka node baru tersebut akan menjadi tail. 

void tambahBelakang(int databaru){ TNode *baru; 
baru = new TNode; 
baru->data = databaru; 
baru->next = baru; 
if(isEmpty()==1){ 
head=baru; 
tail=baru; 
head->next=head; 
tail->next=tail; 
else 
tail->next = baru; 
tail = baru; 
tail->next = head; 
cout<<"Data masuk\n"; 

Kelebihan dari Single Linked List dengan Head & Tail adalah pada penambahan data di belakang, hanya dibutuhkan tail yang mengikat node baru saja tanpa harus menggunakan perulangan pointer bantu. 

Function untuk menampilkan isi linked list: 

void tampil(){ TNode *b; 
b = head; if(isEmpty()==0) 
do 
{ cout<data<<" "; 
b=b->next; 
while(b!=tail->next); 
cout<<<"Masih kosong\n"; 

Pada prinsipnya sama dengan function tampil sebelumnya. 

Function untuk menghapus data di depan 

void hapusDepan(){ TNode *hapus; 
if (isEmpty()==0){ int d; 
hapus = head; 
d = head->data; 
if(head != tail){ 
hapus = head; 
head = head->next; 
tail->next = head; 
delete hapus; 
}else{ 
head=NULL; 
tail=NULL; 
cout<<<" terhapus\n"; 
else cout<<"Masih kosong\n"; 

- Function di atas akan menghapus data terdepan (pertama) yang ditunjuk oleh head pada linked list 
- Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan variabel hapus pada head, kemudian dilakukan pergeseran ke node berikutnya sehingga data setelah head menjadi head baru, kemudian menghapus variabel hapus dengan menggunakan perintah delete. 
- Jika tail masih NULL maka berarti data masih kosong! 

Function untuk menghapus data di belakang: 

Dengan menggunakan Single Linked List ber-Head dan Tail, pengahapusan data di belakang akan mudah dilakukan, tidak seperti pada Single Linked List hanya ber-Head saja. 

void hapusBelakang(){ TNode *hapus,*bantu; 
if (isEmpty()==0){ int d; 
if(head == tail){ d = tail->data; 
head = NULL; 
tail = NULL; 
else 
bantu = head; 
while(bantu->next != tail){ 
bantu = bantu->next; 
hapus = tail; 
tail = bantu; 
d = hapus->data; 
tail->next = head; 
delete hapus; 
cout<<<" terhapus\n"; 
else cout<<"Masih kosong\n"; 

- Function di atas akan menghapus data terbelakang (terakhir) yang ditunjuk oleh tail pada linked list 
- Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan variabel hapus pada tail, kemudian dibutuhkan pointer bantu untuk membantu pergeseran dari head ke node berikutnya sampai sebelum tail, sehingga tail dapat ditunjukkan ke bantu tersebut, dan bantu tersebut akan menjadi tail yang baru. Setelah itu hapus variabel hapus dengan menggunakan perintah delete. 
- Jika tail masih NULL maka berarti data masih kosong! 

Function untuk menghapus semua elemen LinkedList 

void clear(){ TNode *bantu,*hapus; 
if(isEmpty() == 0){ bantu = head; 
while(bantu->next!=head){ 
hapus = bantu; 
bantu = bantu->next; 
delete hapus; 
head = NULL; 
tail = NULL; 

- Menggunakan pointer bantu yang digunakan untuk bergerak sepanjang 
list, dan menggunakan pointer hapus yang digunakan untuk menunjuk 
node-node yang akan dihapus. 
- Pada saat pointer hapus menunjuk pada node yang akan dihapus, pointer 
bantu akan bergerak ke node selanjutnya, dan kemudian pointer hapus 
akan didelete.

Selasa, 20 Februari 2018

1-Pointer, Array and Introduction to Data Structure-2101632055-YOEL JORDANIO IMANUEL


Data Structure 1: Pointer, Array and Introduction to Data Structure


Struktur data berguna untuk mengorganisir data di komputer agar dapat digunakan secara efisien.
Tipe-tipe struktur data yang umum adalah sebagai berikut:

1. Array

  • Kumpulan data sejenis.
  • Memiliki tipe data yang sama (homogen).
  • Setiap elemen array disimpan di lokasi memori yang berurutan.
  • Masing-masing elemen array memiliki sebuah index yang dimulai dari nol
Contoh array:
  1. Array 1 Dimensi:
    • Deklarasi: int arr[5]; // Syntax: tipe nama[ukuran];
    • Akses: arr[1] = 1; 
  2. Array 2 Dimensi:
    • Deklarasi: int arr[3][2]; // Syntax: tipe nama[ukuran1][ukuran2];
    • Akses: arr[1][1] = 1; 
  3. Array Multi Dimensi:
    • Deklarasi: int arr[3][2][5]; // Syntax: tipe nama[ukuran1][ukuran2][…];
    • Akses: arr[1][1][1] = 1;
  • Array juga dapat diberikan nilai dari fungsi-fungsi seperti fungsi input, atau diakses melalui pengulangan.
  • Beberapa operasi yang dapat dilakukan pada array seperti: Transversal, Insertion, Searching, Deletion, Merging & Sorting.

Storing Array Values

1. Initialization of Arrays
Example: int marks[5] = {90, 82, 78, 95, 88};


2. Inputting Values
Example: int i, marks[10];
for (i=0; i<10; i++)
scanf(“%d”, &marks[i]);

3. Assigning Values
Example: int i, arr1[10], arr2[10];
for(i=0; i<10; i++)
arr2[i] = arr1[i];


Operations in Array

Ada beberapa operasi yang bisa dijalankan di array, yaitu :

1. Traversal
2. Insertion
3. Searching
4. Deletion
5. Merging
6. Sorting



BERAPA MAKSIMAL 
MULTIDIMENSI ARRAY?

Variabel array dideklarasikan dengan mencantumkan tipe dan nama variable yang diikuti dengan banyaknya lokasi memori yang ingin dibuat. Jadi jika ditanya untuk batas array batas array hanya ada ketika kita memberi batasan untuk inputan array tersebut. Namun untuk batasan array itu sendiri tidak terbatas sampai perintah array itu memenuhi alokasi memori maksimal.
Berikut refrensi yang saya ambil pada ketentuan JDK java, bahwa batas array tergantung pada requirement memorinya, kalau bawaan dari java sendiri seperti ini.
Mungkin kita dapat mengatakan bahwa maksimum “aman ” pada array adalah 2.147.483.639( Integer.MAX_VALUE – 8 ) jika mengalokasikan array lebih besar dapat mengakibatkan OutOfMemoryError ” .

2. Pointer

Pointer adalah tipe data yang nilainya mengacu pada nilai lain yang disimpan di tempat lain di komputer melalui alamatnya.
2 Operator penting yang digunakan dengan tipe pointer adalah:
  •  &    operator alamat
  •  *     operator dereferencing

3. Linked List

  • Struktur data yang sangat dinamis yang elemen nya dapat di tambah atau hapus dari mana saja
  • Setiap elemen dinamakan simpul (node).

4. Queue

  • Seperti layaknya sebuah antrian, elemen yang dimasukan pertama adalah yang pertama kali keluar.
  • Juga elemen dalam queue ditambah di sisi yang disebut belakang dan dihapus dari sisi yang dinamakan depan.

5. Stacks

  • Stacks dapat direpresentasikan sebagai array yang linear.
  • Setiap stack memiliki variabel TOP yang diasosiasikan kepadanya.
  • Menggunakan LIFO (Last In First Out) / FILO (First In Last Out) seperti layaknya sebuah tumpukan barang.

6. Binary Trees

images

  • Pohon biner adalah struktur data yang dapat didefinisikan sebagai koleksi elemen-elemen yang dipanggil simpul (node).
  • Setiap node memiliki pointer kiri, pointer kanan dan sebuah elemen data.

Tipe Data

Tipe data adalah kumpulan objek dan operasi-operasi yang bekerja pada objek tersebut.
Contoh tipe data yang telah didefinisikan adalah: int, char, float.

Tipe Data Abstrak

Tipe Data Abstrak adalah tipe data yang diorganisir sehingga ciri-ciri objek dengan ciri-ciri operasi pada objeknya terpisah dengan representasi objeknya dan implementasi operasinya.
Di bahasa C/C++ memiliki konsep yaitu class dan struct yang membantu untuk implementasi tipe data abstrak.



SHARING SESSION

About Him
Samuel Theodorus
President Director ELVEN DIGITAL
PT ELVEN DIGITAL INDONESIA IS A COMPANY FOCUSES IN THE CREATIVE ECONOMY FIELD. ESTABLISHED IN 2013, WE HAVE HELPED MORE THAN 200 SMALL AND LARGE-SCALE ENTERPRISES IN ENHANCING THEIR BRANDS QUALITY THROUGH THE DIGITAL MEDIA. ELVEN DIGITAL INDONESIA HAS SUCCESSFULLY CREATED NEW INNOVATION AND SOLUTION IN THE WORLD OF BRANDING WHICH IS ONLINE BRANDING.
WE ARE A RIGHT SOLUTION FOR YOU TO INTRODUCE, PROMOTE, AND INCREASE YOUR COMPANY’S INCOME THROUGH THE INTERNET MEDIA. ELVEN DIGITAL INDONESIA IS A PROVEN DIGITAL BRANDING COMPANY THAT WILL DIGITALLY RAISE YOUR COMPANY WEBSITE POPULARITY AND RANKING BY USING ONLINE ADVERTISING SERVICES SUCH AS GOOGLE ADS, FACEBOOK ADS, TWITTER ADS, YOUTUBE ADS, PERFORMING SEO STRATEGY, AND OTHERS.
WE ALSO PROVIDE A WEBSITE CUSTOMIZATION SERVICE ACCORDING TO YOUR WISH AND NEED TO CREATE A QUALITY AND HIGH-CLASS COMPANY IMAGE. ELVEN DIGITAL INDONESIA DESIGNS PROFESSIONAL, MODERN, AND MESMERIZING


APA ITU SEO (Search Engine Operasi) ?

SEARCH ENGINE disebut juga dengan mesin pencari, dimana sistem yang ada pada sistem tersebut diolah melalui satu atau sekelompok komputer yang berfungsi untuk melakukan pencarian data.

OPERATING SYSTEM adalah sekumpulan perintah dasar yang berperan untuk menjalankan dan mengoperasikan komputer.

Jenis SEO :
1. On page SEO
2. Off page SEO


Apa itu DIGITAL MARKETING?

Pengertian Digital Mrketing adalah suatu usaha untuk melakukan pemasaran sebuah brand atau produk melalui dunia digital atau internet. Tujuannya ialah untuk menjangkau konsumen maupun calon konsumen secara cepat dan tepat waktu. Secara mudahnya ialah, Digital Marketing ialah suatu cara untuk mempromosikan produk/brand tertentu melalui media internet. Bisa melalui iklan di internet, facebook, youtube, ataupun media sosial lainnya




























Yoel Jordanio Imanuel
2101632055