Welcome to Stenly's Blog

This blog contains implementations and tasks around Data Structure

Find Out More Purchase Theme

about me

Dosen

Dosen struktur data kelas F tahun ajaran 2020/2021

Read More

Blog Dosen

Berisi materi-materi yang dibuat sendiri oleh Pak Fajar Baskoro

Read More

Coming Soon

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent feugiat tellus eget libero pretium, sollicitudin feugiat libero.

Read More

Coming Soon

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent feugiat tellus eget libero pretium, sollicitudin feugiat libero.

Read More

Data Structures

Tower of Hanoi

Implementation Tower of Hanoi

Towers of Hanoi atau dalam bahasa Indonesia berarti Menara Hanoi (juga disebut Menara Brahma atau Lucas Tower, dan terkadang pluralised) adalah permainan matematika atau teka-teki . Ini terdiri dari tiga batang, dan sejumlah disk dengan ukuran yang berbeda yang dapat meluncur ke batang apapun. Teka-teki ini dimulai dengan
disk dalam tumpukan rapi dalam urutan dari ukuran pada satu tongkat, yang terkecil di bagian atas, sehingga membuat bentuk kerucut.



Tujuannya adalah untuk mentransfer seluruh menara ke salah satu pasak lainnya (yang paling kanan di applet bawah), bergerak hanya satu disk pada suatu waktu dan tidak pernah yang lebih besar ke kecil atau mematuhi aturan berikut:

  • Hanya satu disk dapat dipindahkan pada suatu waktu.
  • Setiap langkah terdiri dari mengambil disk atas dari salah satu batang dan menggesernya ke batang yang lain, di atas disk lain yang mungkin sudah ada pada batang itu.
  • Tidak dapat ditempatkan di atas sebuah disk lebih kecil.


Implementation :



Output :



Evaluasi Tengah Semester Struktur Data 2021

 Jawaban ETS Struktur Data 2021

Nama Anggota (NRP) : Stenly Saut Martua (5025201095)
                                       Mohammad Fadhil Rasyidin Parinduri (5025201131)
               


1. Jelaskan perbedaan struktur data primitif dengan Non primitif, berikan contohnya dalam program sederhana.

Tipe data adalah atribut dari variabel yang memberi tahu compiler atau interpreter bagaimana programmer bermaksud menggunakan variabel tersebut. Ini mendefinisikan operasi yang dapat dilakukan pada data dan jenis nilai apa yang dapat disimpan. Pada artikel ini, saya (fadhil) akan memberi Anda wawasan singkat tentang berbagai tipe data di Java. Menurut properti yang dimilikinya, tipe data dibagi menjadi dua kelompok:
  1. Tipe Data Primitif
  2. Tipe Data Non-Primitif
Struktur data primitif adalah struktur data yang bertipe data primitif. Tipe data primitif adalah fundamental data type yang ada di java. Tipe data primitif sudah di definisikan dan diberi nama oleh Java. Ada 8 tipe data yang termasuk dalam tipe data primitif, yaitu :
  • byte
  • short
  • int
  • long
  • float
  • double
  • boolean
  • char. 
Sedangkan struktur data nonprimitif adalah struktur data yang bertipe data nonprimitif. Tipe data nonprimitif biasa disebut tipe data referensi. Tipe data nonprimitif adalah tipe data yang di definisikan sendiri oleh programmer sehingga tida mengandung nilai secara langsung. Nilai nya pun bisa lebih dari satu. Contohnya antara lain :
  • string
  • array
  • files
  • list
  • interface.

Sekarang mari kita pahami masing-masing jenis data ini secara mendalam. Pertama saya akan memberi tahu Anda apa itu tipe data boolean.

tipe data boolean
Tipe data boolean terdiri dari sedikit informasi dan hanya dapat menyimpan nilai true atau false. Tipe data ini digunakan untuk melacak kondisi true/false. Sekarang mari kita buat program kecil dan pahami cara kerjanya.
Itu semua tentang tipe data boolean. Saya harap Anda memahaminya. Sekarang mari kita melangkah lebih jauh dan memahami tipe data berikutnya, yaitu tipe data byte.

tipe data byte
Ini adalah contoh tipe data primitif. Tipe data byte adalah 8-bit signed two’s complement integer. Ini menyimpan bilangan bulat yang berada di antara -128 hingga 127. Tipe data byte berguna untuk menghemat memori dalam jumlah besar. Sekarang mari kita buat program kecil dan pahami cara kerjanya.
Itu semua tentang tipe data byte. Sekarang mari melangkah lebih jauh dan memahami tipe data berikut, yaitu char.

tipe data char
Tipe data ini digunakan untuk menyimpan satu karakter. Karakter harus diapit dalam tanda kutip tunggal, seperti 'E' atau 'e'. Alternatifnya, Anda juga dapat menggunakan nilai ASCII untuk menampilkan karakter tertentu. Mari kita ambil contoh kecil dan lihat cara kerjanya.
Itu semua tentang tipe data char. Saya harap Anda memahaminya. Sekarang mari melangkah lebih jauh dan memahami jenis data berikutnya pada daftar, yaitu jenis data singkat.

tipe data short
Tipe data short lebih besar dari byte dalam hal ukuran dan kurang dari integer. Ini menyimpan nilai yang berkisar dari -32.768 hingga 32767. Ukuran default dari tipe data ini: 2 byte. Mari kita ambil contoh dan pahami tipe data singkat.
Ke depan, mari kita melangkah lebih jauh dan melihat tipe data berikutnya, yaitu tipe data int.

tipe data int
Tipe data ini dapat menyimpan bilangan bulat dari -2147483648 hingga 2147483647. Umumnya, int adalah tipe data yang disukai saat Anda membuat variabel dengan nilai numerik.
Setelah memahami ini, sekarang mari kita lihat mana jenis data berikutnya dalam daftar.

tipe data long
Jenis data ini adalah bilangan bulat pelengkap dua 64-bit. Secara default, ukuran tipe data yang panjang adalah 64 bit dan nilainya berkisar dari -263 hingga 263-1.
Itu semua tentang tipe data yang panjang. Sekarang mari kita bergerak dan melihat tipe data mengambang.

Tipe Data Floating
Anda harus menggunakan tipe titik mengambang setiap kali Anda membutuhkan angka dengan desimal, seperti 8,88 atau 3,14515.

tipe data float
Tipe data ini dapat menyimpan bilangan pecahan dari 3.4e−038 hingga 3.4e+038. Perhatikan bahwa Anda harus mengakhiri nilai dengan "f". Mari kita ambil contoh kecil dan pahami jenis data ini secara mendetail.
Jadi ini adalah bagaimana Anda bisa menggunakan tipe data float. Sekarang mari kita lihat satu lagi tipe data mengambang, yaitu double.

tipe data double
Tipe data ganda dapat menyimpan bilangan pecahan dari 1.7e−308 hingga 1.7e+308. Perhatikan bahwa Anda harus mengakhiri nilai dengan "d":
Itu semua tentang tipe data Double dan ini membawa kita ke bagian akhir dari Tipe Data Primitif. Sekarang mari kita cari tahu perbedaan antara tipe data primitif dan non-primitif.

Tipe Data Non-Primitif
Tipe data non-primitif merujuk ke objek dan karenanya disebut tipe referensi. Contoh tipe non-primitif termasuk String, Array, Class, Interface, dll. Gambar di bawah ini menggambarkan berbagai tipe data non-primitif.
Sekarang mari kita pahami tipe data non-primitif ini secara singkat.

String: String adalah urutan karakter. Namun di Java, string adalah objek yang merepresentasikan rangkaian karakter. Class java.lang.String digunakan untuk membuat objek string.

Array: Array di Java adalah struktur data homogen yang diimplementasikan di Java sebagai objek. Array menyimpan satu atau lebih nilai dari tipe data tertentu dan menyediakan akses terindeks untuk menyimpan yang sama. Elemen tertentu dalam array diakses oleh indeksnya.

Class: Class di Java adalah cetak biru yang mencakup semua data Anda. Class berisi bidang (variabel) dan metode untuk menggambarkan perilaku suatu objek.

Interface: Seperti kelas, antarmuka dapat memiliki metode dan variabel, tetapi metode yang dideklarasikan dalam antarmuka secara default abstrak (hanya tanda tangan metode, tidak ada isi).

Jadi itu semua tentang tipe data non-primitif. Sekarang mari kita pahami perbedaan antara tipe data primitif dan non-primitif.

Perbedaan antara tipe data primitif dan non-primitif

Perbedaan antara tipe data primitif dan non-primitif adalah sebagai berikut:
  • Jenis primitif sudah ditentukan sebelumnya di Java. Tipe non-primitif dibuat oleh programmer dan tidak ditentukan oleh Java.
  • Tipe Non Primitif bisa digunakan untuk memanggil metode untuk melakukan operasi tertentu, sedangkan tipe primitif tidak bisa.
  • Tipe primitif selalu memiliki nilai, sedangkan tipe non-primitif bisa nihil.
  • Tipe primitif dimulai dengan huruf kecil, sedangkan tipe non-primitif dimulai dengan huruf besar.
  • Ukuran tipe primitif bergantung pada tipe datanya, sedangkan tipe non-primitif memiliki ukuran yang sama.

2. Jika diketahui notasi infiks = “A + B * C ^ D – E / F” bagaimana bentuk notasi postfiks dari notasi infiks tersebut jika menggunakan operasi stack. Tuliskan dalam bentuk program , dan tampilkan screenshotnya

Menggunakan: Menggunakan Stack.

  • Operator stack: Stack ini akan digunakan untuk menjaga operasi (+, -, *, /, ^)

Urutan prioritas operasi

  1. ^ (Exponential)
  2. / *
  3. + –

Notebrackets ( ) digunakan untuk mengganti aturan ini.

Algoritma:

Inisialisasi hasil sebagai string kosong, ulangi melalui ekspresi yang diberikan, satu karakter pada satu waktu

  1. If karakter adalah operand, tambahkan ke hasil.
  2. If karakter adalah operator.
    • If operator stack kosong maka push ke operator stack.
    • Else If operator stack tidak kosong,
      • If prioritas operator lebih besar dari atau sama dengan prioritas operator stack, maka dorong karakter ke operator stack.
      • If prioritas operator kurang dari prioritas tumpukan atas operator stack maka "pop out operator dari stack dan tambahkan ke hasil sampai stack kosong atau prioritas operator lebih besar dari atau sama dengan prioritas stack bagian atas operator stack". kemudian push operator untuk stack.
  3. If karakternya adalah "(", lalu push ke operator stack.
  4. If karakternya adalah ")", lalu "pop out operator dari stack dan tambahkan ke hasil sampai "("ditemukan di operator stack. Sekarang pop out "(".

Setelah iterasi ekspresi selesai dan operator stack tidak kosong, "keluarkan operator dari stack dan tambahkan ke hasil" sampai operator stack kosong. Hasilnya adalah jawaban kita, ekspresi postfix.

Silakan lihat panduan di bawah ini untuk pemahaman lebih lanjut.


Source Code :

Ouput           :


3. Pada sebuah Bank, setiap nasabah yang datang diminta untuk mengambil antrian. Antrian tersebut memuat urutan layanan nasabah, dan jenis layanan yang dibutuhkan, apakah CS atau Teller.

a.    Antrian di Bank seperti yang kita ketahui memiliki sifat FIFO (First In First Out). Untuk membuat program antrian bank, kita akan membutuhkan struktur data yang juga memiliki sifat FIFO. Struktur data yang akan digunakan adalah Queue/Antrian. Nasabah yang datang ke bank harus mengambil antrian dahulu. Antrian tersebut akan memberitahukan nomor yang didapatkan oleh nasabah. Setelah nasabah telah mendapatkan nomor antrian, nasabah akan masuk ke antrian secara terurut. Setelah itu, pegawai bank akan melayani nasabah yang paling pertama. Setelah pelayanan telah selesai dilakukan, nama nasabah akan dihapus dari antrian, kemudian pegawai bank akan melayani yang selanjutnya dan begitu seterusnya.

b.    


Source Code untuk Node :
Source Code untuk antrian bank:
Source Code untuk aplikasinya :

c.    

Hasil :
link youtube : https://youtu.be/YTSgNI5DAEk


Linked List

 Linked List : Implementasi menggunakan Java

Dalam ilmu komputer, linked list dapat didefinisikan sebagai koleksi linear dari elemen – elemen data. Penempatan elemen – elemen data ini acak di dalam memori, namun antar elemen data ini terhubung dengan node. Jadi satu node dalam suatu elemen data akan menunjuk ke node elemen data lain melalui suatu penunjuk yang umumnya disebut pointer. Jadi dapat disimpulkan, sebuah koleksi data disebut sebagai Linked List apabila antar data tersebut nodenya saling terhubung melalui pointer.



Source Code :

Output :


Queue Usage : Converts an infix expression to a postfix

Queue 

Queue is an abstract data structure, somewhat similar to Stacks. Unlike stacks, a queue is open at both its ends. One end is always used to insert data (enqueue) and the other is used to remove data (dequeue). Queue follows First-In-First-Out methodology, i.e., the data item stored first will be accessed first.



Apa itu infix dan postfix?

Dalam struktur data yang kita pelajari secara umum ada 3 notasi operasi yang dilakukan untuk suatu operasi aritmatika,yaitu Prefix,Infix,dan postfix.Dan untuk mengetahui notasi-notasi yang diatas itu,sebelumnya kita harus mengenal dan mengetahui indikator yang ada di notasi itu tersebut.
    Notasi ini terbentuk dari Operand dan Operator.
Operand adalah data atau nilai yang membantu dalam proses,sedangkan Operasi adalah fungsi yang digunakan dalam proses

2.Infix adalah notasi yang membentuk atas operator dengan operand,dimana operator berada diantara operand.
   Contoh :          
                 - A + B * C
                 - (A + B) * C
                 - A - (B + C) * D ^ E

3.Postfix adalah notasi yang membentuk atas operator dengan operand, dimana operator berada dibelakang operand.
   Contoh : A + B * C ( infix).
maka notasi postfix adalah ABC*+.
Pemecahannya:
                  A + B * C
     Diketahui ada 3 operand yaitu : A,B,C dan 2 operator yaitu : +, *. proses dimulai dengan melihat dari hirarkhi operator.Contoh diatas operator yang tertinggi adalah * kemudian +.
Pada kali ini, pengubahan ekspresi infix menjadi postfix menggunakan stack dan queue.
Source Code :
Queue
Stack
Infix to Postfix
Pengaplikasian
Hasil :




Stack

 Implementasi Stack

Dalam ilmu komputertumpukan (bahasa Inggrisstack) merupakan sebuah koleksi objek yang menggunakan prinsip LIFO (Last In First Out), yaitu data yang terakhir kali dimasukkan akan pertama kali keluar dari tumpukan tersebut. Operasi untuk memasukkan data biasa disebut push dan operasi untuk mengeluarkan biasanya disebut pop. Tumpukan dapat diimplementasikan sebagai senarai berantai atau larik. Tumpukan tergolong struktur data linear dan operasi push dan pop hanya bisa dilakukan di satu ujung struktur yang biasa disebut top dari tumpukan. Untuk melihat data yang ada di top tanpa mengeluarkannya, biasanya dilakukan menggunakan operasi peek.



Source Code : 


Output :


Sorting

 

1.    Bubble Sort

    Bubble sort merupakan algoritma pengurutan paling tua dengan metode pengurutan paling sederhana. Pengurutan yang dilakukan dengan membandingkan masing-masing item dalam suatu list secara berpasangan, menukar item jika diperlukan, dan mengulaginya sampai akhir list secara berurutan, sehingga tidak ada lagi item yang dapat ditukar.
Source Code :

Hasil :


2.    Selection Sort

de utama dari algoritma selection sort adalah memilih elemen dengan nilai paling rendah dan menukar elemen yang terpilih dengan elemen ke-i. Nilai dari dimulai dari 1 ke n, dimana adalah jumlah total elemen dikurangi 1.

Source Code :

Hasil : 


3.     Insertion Sort 

Algoritma insertion sort pada dasarnya memilah data yang akan diurutkan menjadi dua bagian, yang belum diurutkan dan yang sudah diurutkan. Elemen pertama diambil dari bagian array yang belum diurutkan dan kemudian diletakkan sesuai posisinya pada bagian lain dari array yang telah diurutkan. Langkah ini dilakukan secara berulang hingga tidak ada lagi elemen yang tersisa pada bagian array yang belum diurutkan.

Source Code : 

Hasil : 



Concept and Use of Arrays

Array




In computer science, an array data structure, or simply an array, is a data structure consisting of a collection of elements (values or variables), each identified by at least one array index or key. An array is stored such that the position of each element can be computed from its index tuple by a mathematical formula. The simplest type of data structure is a linear array, also called one-dimensional array.

Here are five examples of array data structure implementations

1.    Array App

Penggunaan array menggunakan cara konvensional

    Source Code :
    Output          :
    
2.    Low Array

    Source Code :
    Output          :
    
3.    High Array

    Source Code :
    Output          :

4.    Ordered Array

    Source Code :
    Output          :

5.    Class Data Array

    Source Code :
    Output          :

Last name : Evans
First name : Patty
Age : 24
Last name : Smith
First name : Loraine
Age : 37
Last name : Yee
First name : Tom
Age : 43
Last name : Adams
First name : Henry
Age : 63
Last name : Hashimoto
First name : Sato
Age : 21
Last name : Stimson
First name : Henry
Age : 29
Last name : Velasquez
First name : Jose
Age : 72
Last name : Lamarque
First name : Henry
Age : 54
Last name : Vang
First name : Minh
Age : 22
Last name : Creswell
First name : Lucinda
Age : 18
Found 
Last name : Stimson
First name : Henry
Age : 29
Deleting Smith, Yee, and Creswell
Last name : Evans
First name : Patty
Age : 24
Last name : Adams
First name : Henry
Age : 63
Last name : Hashimoto
First name : Sato
Age : 21
Last name : Stimson
First name : Henry
Age : 29
Last name : Velasquez
First name : Jose
Age : 72
Last name : Lamarque
First name : Henry
Age : 54
Last name : Vang
First name : Minh
Age : 22





Our Blog

55 Cups
Average weekly coffee drank
9000 Lines
Average weekly lines of code
400 Customers
Average yearly happy clients

Our Team

Irene Sukandar
CEO
Joy Situmorang
Creative Designer
Doyeon Tambunan
Sales Manager
Rini Butar Butar
Developer

Contact

Talk to us

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Dolores iusto fugit esse soluta quae debitis quibusdam harum voluptatem, maxime, aliquam sequi. Tempora ipsum magni unde velit corporis fuga, necessitatibus blanditiis.

Address:

9983 City name, Street name, 232 Apartment C

Work Time:

Monday - Friday from 9am to 5pm

Phone:

595 12 34 567

Cari Blog Ini

Diberdayakan oleh Blogger.

Tower of Hanoi

Implementation Tower of Hanoi Towers of Hanoi atau dalam bahasa Indonesia berarti Menara Hanoi (juga disebut Menara Brahma atau Lucas Tower,...