BentukNode Single Linked List non Circular. Single : field pointer-nya hanya satu dan satu arah,pada akhir node pointernya menunjuk NULL. Linked List : node-node tersebut saling terhubung satu sama lain. Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. 2 List, koleksi dinamis dengan ukuran adaptif dan bisa mengelompokkan tipe data yang sama ataupun berbeda 3. Map, koleksi dinamis dengan ukuran adaptif dan bisa mengelompokkan tipe data yang sama ataupun berbeda dengan menggunakan pasangan . Contoh tipe data Array, 9 Hermawan, T. Informatika UTM Buku Ajar dan Panduan Praktikum Struktur Data Strukturlinked list lebih dinamis, karena banyaknya elemen dengan mudah ditambah atau dikurangi, berbeda dengan arrayb yang ukuranya bersifat tetap. Disamping itu, manipulasi terhadap setiap elemen seperti menyisipkan, menghapus, maupun menambah dapat dilakukan dengan lebih mudah. Apakahitu Queue. Untuk mahasiswa Informatika, pasti sudah tidak asing lagi dengan istilah ini. Dalam perkuliahan Struktur Data ( Data Structure) pasti mendapatkan Queue (setelah stack tentunya). Jadi Queue adalah salah satu implementasi dari linked list. Queue menerapkan konsep FIFO (First In First Out) atau FCFS (First Come, First Serve). Vay Tiền Nhanh Chỉ Cần Cmnd. ALOKASI MEMORI DINAMIS DAN POINTER Pendahuluan Salah satu kelemahan data bertipe array adalah bahwa variabel tersebut harus dideklarasikan terlebih dahulu dengan menyebutkan ukurannya. Dengan demikian ukuran variabel tersebut tidak dapat kita ubah selama program dijalankan. Lalu bagaimanakah kalau kita akan membuat program untuk menangani data dalam jumlah yang besar? Bagaimana pula kalau jumlah datanya tidak diketahui sebelumnya?. Pertanyaan pertama mungkin dapat diselesaikan dengan memesan variabel array dengan ukuran sebanyak data yang akan dimasukkan. Tetapi sebenarnya ide ini belum tentu dapat dijalankan terutama kalau implementasi programnya menggunakan bahasa yang mensyaratkan ukuran maksimum variabel dalam suatu program, seperti Pascal yang membatasi jumlah ukuran semua variabel dalam suatu program tidak boleh melebihi 64 Kb. Sebagai contoh, berikut ini adalah deklarasi dalam Pascal yang akan ditolak var banyak array[1..35000] of integer; var larikan array[1..12000] of real; var larik1 array[1..30000] of char; var larik2 array[1..35000] of byte Pendeklarasian di atas akan ditolak oleh Pascal karena ukuran variabel banyak adalah 35000 x 2 byte = 70000 byte ukuran variabel larikan adalah 12000 x 6 byte = 72000 byte ukuran variabel larik1 = 30000 x 1 byte = 30000 byte dan ukuran variabel larik2= 35000 x 1 byte = 35000 byte, sehingga total ukuran kedua variabel adalah 65000 byte Permasalahan kedua juga menyulitkan pemrograman. Bila kita alokasikan variabel dengan ukuran yang besar sementara nantinya data yang dipakai hanya sedikit maka ini berarti pemborosan memori memori sudah dipesan tetapi tidak dipergunakan sedang bila dialokasikan dengan ukuran kecil sementara nantinya data yang digunakan cukup banyak sehingga deklarasi yang dibuat tidak cukup maka tentunya permasalahan tidak akan terselesaikan. Untuk mengatasi permasalahan di atas maka pada beberapa bahasa pemrograman terstruktur diperkenalkan adanya dua jenis variabel yaitu variabel statis seperti yang sudah dibicarakan pada bagian sebelumnya dan variabel dinamis yang akan kita bicarakan pada bagian ini. Alokasi Memori Dinamis Alokasi memori dinamis dapat dikatakan merupakan suatu teknik alokasi memori dimana, tidak seperti pada penggunaan array,penggunaan memori tidak sekaligus pada saat variabel dideklarasikan dipesan tetapi dengan bertahap. Program berjalan pada awalnya dengan sedikit memori data, kemudian pada suatu saat bila memerlukan ruang/memori lagi misal datanya bertambah barulah program meminta memori yang diperlukan untuk keperluan tersebut kepada sistem. Dengan cara yang sama bila program sudah tidak memerlukan data lagi maka memori yang diperlukan untuk menyimpan data dapat dibebaskan. Memori yang dibebaskan ini selanjutnya mungkin untuk proses yang lain pada multiprogramming atau untuk keperluan program yang sama nantinya. Pointer Pointer sering disebut juga dengan istilah link atau referensi adalah suatu variabel yang berisi alamat dari suatu variabel yang lain. Sebagai contohnya pada saat kita mengakses record kita tidak tahu dimana record tersebut secara eksak diletakkan di dalam memori, karena dengan menggunakan pointer kita membiarkan sistem komputer mengatur letak record tersebut ketika diperlukan. Secara umum, dalam pembicaraan tentang pointer, tipe data pointer digambarkan sebagai tanda panah sedang variabel yang ditunjuk digambarkan sebagai kotak. Variabel Statis dan Variabel Dinamis Variabel statis adalah variabel yang dideklarasikan dan dinamai pada saat penulisan program. Memori yang dipakai oleh variabel ini akan tetap ada dianggap terpakai selama program dimana variabel tersebut dideklarasikan sedang dijalankan. Variabel dinamis adalah variabel yang dibuat dan mungkin juga dihapus/dirusak selama eksekusi progam. Karena variabel dinamis belum nyata ada pada saat program dikompilasi ia nyata-nyata ada pada saat dibuat yaitu pada saat program dieksekusi, maka variabel seperti ini tidak dapat dinamai pada saat program dibuat/ditulis. Satu-satunya cara untuk mengakses variabel dinamis adalah dengan menggunakan pointer. Saat suatu variabel dinamis dibuat, ia belum berisi data dan harus memiliki suatu tipe tertentu seperti halnya variabel biasa. Sebaliknya variabel statis tidak dapat dibuat ataupun dihapus pada saat eksekusi program dan variabel pointer tidak dapat digunakan untuk menunjuk kepada variabel statis. Variabel statis dapat diakses hanya dengan menggunakan namanya dan bila kita ingin menunjuk pada suatu posisi dalam array maka kita dapat melakukannya dengan menggunakan indeks/variabel yang bertipe seperti indeks dari array. Notasi dalam Pascal Pointer dalam Pascal dinyatakan dengan menggunakan tanda “^”. Sintaks secara umum adalah type nama_pointer = ^tipe_variabel_yang_ditunjuk atau var nama_pointer = ^tipe_variabel_yang_ditunjuk Keterangan nama_pointer adalah pengenal untuk tipe data pointer tipe_variabel_yang_ditunjukadalah tipe data variabel dinamis yang ditunjuk oleh pointer Tipe variabel ini bisa berupa tipe sederhana integer, char, boolean, word atau tipe yang lebih kompleks real, record,array Contoh type item = integer; pointitem = ^item; pointnode= ^integer; var ptr_ke_int pointitem; var a,b pointitem; c,d pointnode; Keterangan Pada contoh a tipe item adalah sama dengan tipe integer tipe pointitem adalah tipe pointer yang menunjuk data bertipe item tipe pointnode adalah tipe pointer yang menunjuk data bertipe integer Pada contoh b variabel a dan b bertipe pointitem variabel c dan d bertipe pointnode Kalau diperhatikan, pada contoh b di atas keempat variabel a,b,c dan d semuanya merupakan variabel pointer yang menunjuk ke variabel bertipe integer. Meskipun demikian karena tipe dasarnya berbeda variabel a dan b bertipe pointitem sedang variabel c dan d bertipe pointnode maka dianggap bahwa variabel a dan b memiliki tipe yang sama, demikian pula c dan d, tetapi a tidak dapat disamakan dengan c atau d. Dengan demikian assignment a= b dan c= d adalah sah, tetapi a = d adalah ilegal. Membuat Dan Menghapus/Merusak Variabel Dinamis Dalam bahasa Pascal, pembuatan variabel dinamis dapat dilakukan dengan prosedur standar NEW. Bila p adalah variabel pointer ke tipe node maka prosedur NEWp akan menghasilkan suatu variabel dinamis bertipe node dan memberikan alamatnya ke pointer p. Untuk menghapus, merusak atau mengembalikan memori yang dipakai oleh variabel dinamis dapat digunakan prosedur dasar DISPOSE, misalnya DISPOSEp berarti mengembalikan memori yang ditempati oleh variabel dinamis yang ditunjuk oleh pointer p ke sistem. Pointer Bernilai NIL Kadang suatu variabel pointer p tidak menunjuk ke suatu variabel dinamis. Ini dapat dilakukan dengan memberikan assignment p= nil. Perlu dibedakan pengertian variabel pointer yang bernilai NIL dengan variabel pointer yang tak terdefinisi tak tentu. Variabel pointer bernilai NIL berarti ia tidak menunjuk ke suatu variabel dinamis, sedang variabel pointer yang bernilai tak tentu berarti ia mungkin mengacu menunjuk ke suatu lokasi sembarang di memori. Dengan perintah DISPOSEp maka akan berakibat p menjadi tak tentu sehingga disarankan untuk mengassign dengan nilai NIL setiap kali suatu variabel dinamis dibebaskan misal p =NIL CATATAN Untuk mempermudah pemahaman tentang variabel pointer, berikut ini adalah cara pengartian tanda “^“, bila diberikan deklarasi p ^item p ^item berarti p menunjuk ke suatu tipe item p^ berarti apa yang ditunjuk oleh p Dengan demikian bila p dan q adalah dua variabel pointer bertipe sama, maka assignment p= q dan p^ = q^ adalah legal. Meskipun demikian mereka mempunyai pengertian yang berbeda. p= q berarti p dan q menunjuk ke lokasi yang sama, sedang p^ = q^ berarti p dan q menunjuk lokasi yang berbeda tetapi isi variabel dinamis yang ditunjuk keduanya sama. Jadi assignment yang kedua dapat diartikan seperti halnya meng-copy-kan isi variabel q ke variabel p sehingga isi keduanya sama. TUGAS Bila diberikan deklarasi tipe dalam Pascal type ptr = ^node; var p,q,r ptr; var x,y,z node; tentukan statemen yang manakah di bawah ini yang legal/benar dan yang manakah yang tidak benar/ilegal? Berikan alasannya masing-masing. a NEWp b NEWq^ c NEWx d p=r e q = y f r = NIL g z = p^ h p = ^x i disposey j disposep^ k disposer l x = NEWp m q^ = NIL n p^ = x^ o z = NIL Diberikan sepenggal program pendek sebagai berikut Program nyoba_pointer; uses crt; var b byte; c char; pb ^byte; pc,pd ^char; BEGIN b = 100; c= S’; newpb; pb^ = b; newpc; pc^= c; pd =pc; writelnpd^, pc^; pc^= M’; writelnpd^, pc^; newpd; pd^= R’; writelnpd^,pc^; END. Exercise Antrian Program CONTOH_ANTRIAN; uses crt; const maxelm = 15; type tipeelemen = record nama string[15]; nim string[10]; lulus byte; end; antrian = record banyak 0..maxelm; elemen array[1..maxelm] of tipeelemen; end; var Q antrian; function penuhqq antrianboolean; begin if = maxelm then penuhq = true else penuhq= false end; function kosongqqantrianboolean; begin if = 0 then kosongq = true else kosongq = false end; Procedure addqvar q antrian;data tipeelemen; begin if not penuhqq then begin = + 1; = data; end else writelnMaaf antrian penuh’; end; Procedure deleteqvar data tipeelemen; var q antrian; var i 0..maxelm; begin if not kosongqq then begin data = for i= 2 to do = = end else writelnMaaf antrian kosong’; end; Procedure bacadatavar qantrian; var i,n integer; t tipeelemen; begin writeBerapa data mau dimasukkan ;readlnn; for i= 1 to n do begin writeNama mahasiswa ;readln writeNIM ;readln = random3+3; addqq,t; end; end; Procedure tampilq antrian; var i 0..maxelm; t tipeelemen; begin writelnUrutan Nama NIM LULUS’; for i= 1 to do begin t = writelni3, tahun’; end; end; begin clrscr; bacadataq; tampilq; readln end. Exercise Tumpukan Program contoh_tumpukan; uses crt; const maxelm = 15; type tipeelemen = char; tumpukan = record banyak 0..maxelm; elemen array[1..maxelm] of tipeelemen; end; var stack tumpukan; I 0..maxelm; KAL STRING; {Function penuhsstumpukanboolean; begin JIKA MAKA penuhs = TRUE ELSE penuhs = FALSE end; Function kosongss tumpukanboolean; begin JIKA = 0 THEN kosongs = TRUE ELSE kosongs = FALSE end; } Procedure PUSHvar s tumpukan; data tipeelemen; begin {if not penuhss then } begin = = data; end {else writelnMaaf antrian penuh’} end; Procedure POPvar data tipeelemen; var s tumpukan; begin {if not kosongss then } begin data = = -1; end {else writelnMAAF ANTRIAN KOSONG’} end; Procedure tampilstackstumpukan; var i 0..maxelm; data tipeelemen; begin writelnIsi stack secara berurutan adalah ; for i= 1 to do begin popdata,s; writedata; end; end; BEGIN CLRSCR; WRITEMASUKKAN KALIMAT PENDEK ;READLNKAL; FOR I= 1 TO LENGTHKAL DO PUSHSTACK,KAL[I]; tampilstackstack; readln; end. TUMPUKAN & ANTRIAN STACK & QUEUE STACK TUMPUKAN Stack tumpukan sebenarnya secara mudah dapat diartikan sebagai list urutan dimana penambahan dan pengambilan elemen hanya dilakukan pada satu sisi yang disebut top puncak dari stack. Dengan melihat definisi tersebut maka jelas bahwa pada stack berlaku aturan LIFO Last In First Out, yaitu elemen yang terakhir masuk akan pertama kali diambil atau dilayani. Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selsnjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas yang terakhir kali ditaruh, bukan yang terbawah yang pertama kali diletakkan. Dua operasi dasar pada stack adalah PUSH operasi pemasukan elemen ke dalam stack dan POP operasi pengambilan satu elemen dari dalam stack. Di bawah ini diberikan contoh pemakaian operasi PUSH dan POP dan isi stack untuk setiap selesai eksekusi satu operasi. Untuk mempermudah penulisan, di bawah ini isi stack tidak dituliskan secara bertumpuk, tetapi dengan kesepakatan elemen paling kanan adalah elemen yang ada pada TOS Top Of the Stack stack yang dipakai bernama S PUSHS,B berarti memasukkan elemen B ke dalam stack S POPB,S berarti mengambil elemen dari stack S dan menaruhnya ke dalam variabel B Operasi yang dilakukan Isi Stack Keterangan Kondisi Awal kosong – PUSHA’,S A – PUSHB’,S AB – PUSHC’,S ABC – POPData,S AB Variabel Data berisi C’ PUSHD’,S ABD – POPData,S AB Data berisi D’ POPData,S A Data berisi B’ IMPLEMENTASI STACK DALAM BAHASA PASCAL Implementasi dalam bahasa Pascal dapat dilakukan dengan memanfaatkan struktur data record dan array. Array dipergunakan untuk menyimpan elemen-elemen yang dimasukkan. Selain itu diperlukan pula suatu variabel untuk mencatat banyaknya elemen yang adadi dalam array yang sekaligus menunjukkan TOS. Pada implementasi di bawah ini konstanta maxelm menyatakan banyaknya elemen maksimum yang dapat ditampung oleh stack typeelemen adalah tipe data yang akan disimpan di dalam stack bisa integer, word, real, boolean, char , string atau lainya banyak adalah field yang menyatakan banyaknya elemen dalam stack saat itu, yang sekaligus menyatakan TOS Deklarasi tipe untuk tumpukan stack type tumpukan = record banyak 0..maxelm; elemen array[1..maxelm] of typeelemen; end; Selain prosedur untuk POP dan PUSH, kita dapat pula menambahkan sejumlah fungsi untuk membantu penanganan kesalahan diantaranya adalah fungsi PENUHS untuk mengecek apakah stack penuh fungsi KOSONGS untuk mengecek apakah stack kosong dan fungsi SIZES untuk mengetahui banyaknya elemen di dalam stack. Masing-masing sub program di atas dapat disajikan pseudocode-nya sebagai berikut Procedure Inisialisasivar S tumpukan; begin S. banyak¬ 0 end; Function PENUHSS tumpukan boolean; begin Jika = maxelm maka PENUHS ¬ true else PENUHS ¬false end; Function KOSONGSS tumpukanboolean; begin If = 0 then KOSONGS ¬ true else KOSONGS¬false end; Procedure PUSHdata tipeelemen; var S tumpukan; begin If not KOSONGSS then begin ¬ +1 end else Tampilkan pesan kesalahan “Stack Penuh” end; Procedure POPvar S tumpukan; var data typeelemen; begin If not KOSONGSS then begin data¬ ¬ – 1 end else Tampilkan pesan kesalahan “Stack kosong” End; ke atas halaman ke menu utama QUEUE ANTRIAN Queue atau antrian sebenarnya juga merupakan suatu list. Salah satu sifat yang membedakan queue dengan stack adalah bahwa pada queue penambahan elemen dilakukan pada salah satu ujung ujung depan dan pengambilan dilakukan pada ujung yang lain ujung belakang . Dengan demikian queue menggunakan prinsip FIFO First In First Out, yaitu elemen yang pertama masuk akan pertama kali pula dikeluarkan. Seperti pada stack, operasi-operasi dasar pada queue adalah operasi penambahan elemen sebut “ADDQ” dan operasi pengambilan elemen sebut DELQ. Di bawah ini diberikan contoh pemakaian operasi PUSH dan POP dan isi stack untuk setiap selesai eksekusi satu operasi. Untuk mempermudah penulisan, di bawah ini isi queue tidak dituliskan secara bertumpuk, tetapi dengan kesepakatan elemen paling kanan adalah elemen yang ada pada ujung belakang yang terakhir kali masuk queue yang dipakai bernama Q ADDQQ,B berarti memasukkan elemen B ke dalam queue Q DELQB,Q berarti mengambil elemen dari queue Q dan menaruhnya ke dalam variabel B Operasi yang dilakukan Isi Queue Keterangan Kondisi Awal kosong – ADDQA’,Q A – ADDQB’,Q AB – ADDQC’,Q ABC – DELQData,Q BC Variabel Data berisi A’ ADDQD’,Q BCD – DELQData,Q CD Data berisi B’ POPData,S D Data berisi C’ IMPLEMENTASI QUEUE DALAM BAHASA PASCAL Implementasi dalam bahasa Pascal dapat dilakukan dengan memanfaatkan struktur data record dan array. Array dipergunakan untuk menyimpan elemen-elemen yang dimasukkan. Selain itu diperlukan pula suatu variabel untuk mencatat banyaknya elemen yang ada di dalam array. Pada implementasi di bawah ini konstanta maxelm menyatakan banyaknya elemen maksimum yang dapat ditampung oleh queue typeelemen adalah tipe data yang akan disimpan di dalam queuebisa integer, word, real, boolean, char , string atau lainya banyak adalah field yang menyatakan banyaknya elemen dalam queue saat itu queue diimplementasikan sebagai array linier dengan memandang bahwa elemen terdepan selalu berada pada sel pertama implementasi fisik, sehingga bila terjadi pengambilan satu elemen maka semua elemen di belakang elemen terambil bila ada harus digeser ke depan satu langkah Deklarasi tipe untuk antrian queue type antrian= record banyak 0..maxelm; elemen array[1..maxelm] of typeelemen; end; Selain prosedur untuk ADDQ dan DELQ, kita dapat pula menambahkan sejumlah fungsi untuk membantu penanganan kesalahan diantaranya adalah fungsi PENUHQ untuk mengecek apakah antrian penuh fungsi KOSONGQ untuk mengecek apakah antrian kosong dan fungsi SIZEQ untuk mengetahui banyaknya elemen di dalam queue. Masing-masing sub program di atas dapat disajikan pseudocode-nya sebagai berikut Procedure Inisialisasivar q antrian; begin Q. banyak ¬ 0 end; Function PENUHQq antrian boolean; begin Jika = maxelm maka PENUHQ ¬ true else PENUHQ¬false end; Function KOSONGQq antrianboolean; begin If = 0 then KOSONGQ ¬ true else KOSONGQ ¬ false end; Procedure ADDQdata tipeelemen; var q antrian; begin If not PENUHQQ then begin ¬ data end else Tampilkan pesan kesalahan “Antrian Penuh” end; Procedure DELQvar q antrian; var data typeelemen; begin If not KOSONGSQ then begin data ¬ for i= 2 to ¬ ¬ 1 end else Tampilkan pesan kesalahan “Antrian kosong” End; Dengan melihat implementasi di atas kita dapat merasakan adanya ketidakefisienan, yaitu bahwa untuk mengambil satu elemen dari queue kita harus menggeser sisa elemen yang sebenarnya tidak menjadi perhatian kita. Untuk data yang sedikit mungkin ini tidak terasa, tetapi untuk data yang banyak maka ketidakefisienan ini akan tampak jelas. Untuk mengatasi permasalahan di atas kita dapat menggunakan implementasi queue berputar, yaitu dengan membiarkan sel tetap kosong bila elemen pada sel tersebut baru saja diambil. Bagaimanakah implementasi queue berputar? Perhatikan implementasi di bawah ini. type antrian_putar= record depan,belakang,banyak 0..maxelm; elemen array[1..maxelm] of typeelemen; end; Field depan dan belakang masing-masing adalah untuk mencatat lokasi elemen terdepan yang akan diambil berikutnya dan lokasi elemen paling belakang elemen terakhir kali masuk Procedure ADDQdata tipeelemen; var q antrian_putar; begin If not PENUHQQ then begin ¬ mod maxelm+1 ¬ data end else Tampilkan pesan kesalahan “Antrian Penuh” end; Procedure DELQvar q antrian_putar; var data typeelemen; begin If not KOSONGSQ then begin data ¬ ¬ 1 ¬ mod maxelm+1 end else Tampilkan pesan kesalahan “Antrian kosong” End; PROSEDUR dan FUNGSI REKURSIF PROSEDUR dan FUNGSI REKURSIF Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah Prosedur dan fungsi merupakan sub program yang sangat bermanfaat dalam pemrograman, terutama untuk program atau proyek yang besar. Manfaat penggunaan sub program antara lain adalah meningkatkan readibility, yaitu mempermudah pembacaan program meningkatkan modularity, yaitu memecah sesuatu yang besar menjadi modul-modul atau bagian-bagian yang lebih kecil sesuai dengan fungsinya, sehingga mempermudah pengecekan, testing dan lokalisasi kesalahan. meningkatkan reusability, yaitu suatu sub program dapat dipakai berulang kali dengan hanya memanggil sub program tersebut tanpa menuliskan perintah-perintah yang semestinya diulang-ulang. Sub Program Rekursif adalah sub program yang memanggil dirinya sendiri selama kondisi pemanggilan dipenuhi. adalah Dengan melihat sifat sub program rekursif di atas maka sub program rekursif harus memiliki kondisi yang menyebabkan pemanggilan dirinya berhenti disebut kondisi khusus atau special condition pemanggilan diri sub program yaitu bila kondisi khusus tidak dipenuhi Secara umum bentuk dari sub program rekursif memiliki statemen kondisional if kondisi khusus tak dipenuhi then panggil diri-sendiri dengan parameter yang sesuai else lakukan instruksi yang akan dieksekusi bila kondisi khusus dipenuhi Sub program rekursif umumnya dipakai untuk permasalahan yang memiliki langkah penyelesaian yang terpola atau langkah-langkah yang teratur. Bila kita memiliki suatu permasalahan dan kita mengetahui algoritma penyelesaiannya, kadang-kadang sub program rekursif menjadi pilihan kita bila memang memungkinkan untuk dipergunakan. Secara algoritmis dari segi algoritma, yaitu bila kita mempertimbangkan penggunaan memori, waktu eksekusi sub program sub program rekursif sering bersifat tidak efisien . Dengan demikian sub program rekursif umumnya memiliki efisiensi dalam penulisan perintah, tetapi kadang tidak efisien secara algoritmis. Meskipun demikian banyak pula permasalahan-permasalahan yang lebih sesuai diselesaikan dengan cara rekursif misalnya dalam pencarian / searching, yang akan dibahas pada pertemuan-pertemuan yang akan datang. Contoh sub program rekursif dalam bahasa Pascal. Contoh sederhana PROCEDURE TULIS_1banyak integer;kata string; begin if banyak > 1 then TULIS_1banyak-1,kata; writelnkata, banyak5; end; OUTPUT misal dipanggil dengan TULIS_15,”Cetakan ke “ Cetakan ke 1 Cetakan ke 2 Cetakan ke 3 Cetakan ke 4 Cetakan ke 5 Bandingkan prosedur dan outputnya di atas dengan prosedur di bawah ini! PROCEDURE TULIS_2banyak integer;kata string; begin writelnkata, banyak5; if banyak > 1 then TULIS_1banyak-1,kata; end; OUTPUT misal dipanggil dengan TULIS_25,”Cetakan ke “ Cetakan ke 5 Cetakan ke 4 Cetakan ke 3 Cetakan ke 2 Cetakan ke 1 Mengapa hasilnya jauh berbeda? Contoh terapan Secara matematis, perkalian dua bilangan bulat positif a dengan b ditulis ab atau a x b pada hakekatnya merupakan penjumlahan dari a sebanyak b suku, yaitu a + a + a + …. + a sebanyak b suku. Misalnya 2 x 3 dapat diartikan sebagai 2 + 2 + 2 = 6 , yaitu penjumlahan 2 sebanyak 3 suku  Dengan mengingat bahwa suatu bilangan bila dikalikan dengan angka 1 satu akan menghasilkan bilangan itu sendiri, maka permasalahan perkalian dengan menyatakannya dalam bentuk penjumlahan di atas dapat diselesaikan dengan komputer secara mudah. Dengan non rekursif Dengan prosedur Procedure KALI_BIASA_Pa,b integer; var hasil longint; var i integer; begin hasil = 0; for i= 1 to b do hasil = hasil + a; end; Dengan fungsi Function KALI_BIASA_Fa,bintegerlongint; var hasil longint; i integer; begin hasil = 0; for i= 1 to b do hasil = hasil + a; KALI_BIASA_F = hasil; end; Dengan Rekursif Dengan Prosedur Procedure KALI_REK_Pa,binteger;var hasillongint begin if b>1 then KALI_REK_Pa,b-1,hasil; hasil= hasil+a; end; Dengan Fungsi Function KALI_REK_Fa,bintegerlongint; begin if b>1 then KALI_REK_F = KALI_REK_Fa,b-1+a else KALI_REK_F = a; end; REKAMAN RECORD RECORD REKAMAN Record adalah tipe terstruktur yang terdiri atas sejumlah elemen yang tipenya tidak harus sama. Elemen di dalam suatu record disebut dengan istilah field medan. Sebelumnya sudah dibicarakan struktur data yang juga memiliki sejumlah elemen yaitu array. Perbedaan utama dari keduanya adalah bahwa elemen dalam suatu array semuanya memiliki tipe yang sama sedang elemen-elemen di dalam rekaman tidak harus bertipe sama. Contoh type LARIK = array [1..100] of real; var a larik; Dari deklarasi di atas berarti kita mendefinisikan suatu tipe data baru bernama LARIK yang merupakan array berisi data real dengan elemen maksimum yang dapat ditampung sebanyak 100 yang ditandai sebagai elemen ke-1, ke-2, ke-3 dan seterusnya. Salah satu variabel yang memiliki tipe LARIK adalah variabel A. Dengan demikian variabel A dapat menampung data maksimum sebanyak 100 dan data yang disimpan harus bertipe real.. Untuk memahami tipe data record perhatikan contoh tabel data mahasiswa di bawah ini. NIM NAMA USIA JML_SAUDARA 5234 K Mustofa 26 2 5233 AS Anandya S 25 1 5127 Dina A 23 3 4006 Yadi 20 5 Bila kita perhatikan tabel di atas, kita peroleh gambaran dalam 1 kolom, tipe data yang diisikan pasti sama misal NIM dideklarasikan sebagai data numeric integer misalnya maka semua NIM harus berupa data angka suatu obyek dapat dikenali secara tunggal menggunakan gabungan nilai data kolom-kolom dalam setiap barisnya. misal gabungan nilai NIM ‘5234’, NAMA ‘K. Mustofa’, USIA ‘26’ dan JML_SAUDARA ‘2’ mengacu pada suatu obyek yang tertentu yaitu seseorang Di dalam konsep database, kolom dalam suatu tabel seperti di atas disebut sebagai atribut atau field. Sedang gabungan field-field dalam suatu baris disebut tuple atau record. Dengan deskripsi di atas, dapat dikatakan bahwa seorang mahasiswa dapat dinyatakan sebagai suatu record yang memiliki 4 data elemen yaitu field NIM, field NAMA, field USIA dan field JML_SAUDARA. Bagaimanakan representasi record dalam PASCAL? Record dalam bahasa pascal dapat dideklarasikan dengan cara bentuk umum sebagai berikut TYPE nama_pengenal_record = RECORD nama_field1 type_field1; nama_field2 type_field2; nama_field3 type_field3; nama_fieldn type_fieldn; END; Dengan mengambil contoh data mahasiswa di atas, kita dapat memiliki deklarasi sebagai berikut TYPE mhs = RECORD nim integer; nama string[30]; usia byte; jml_saudara 0..15; END; Bagaimana Menggunakan Tipe Data Record dan Mengakses Field-Field di dalamnya? Kalau kita sudah memiliki deklarasi record seperti di atas, maka untuk menggunakannya di dalam program tentunya kita tinggal memesan variabel-variabel yang kita perlukan dengan perintah VAR. Perhatikan contoh berikut var satu mhs; banyak array[1..20] of mhs; Deklarasi / pemesanan variabel di atas berarti program memerlukan alokasi memori yang akan dipergunakan untuk menyimpan data bertipe mhs. Variabel “satu” dapat dipergunakan untuk menyimpan data satu mahasiswa, sedang variabel “banyak” dapat dipergunakan untuk menyimpan maksimum 20 data mahasiswa. Untuk mengakses data bertipe record kita tidak dapa melakukannya dengan satu langkah seperti halnya ketika kita mengakses suatu variabel sederhana. Kalau kita memiliki variabel p bertipe sederhana integer, byte, word, char, real maka untuk memberikan nilai kira dapat menggunakan operator assignment = atau untuk membaca masukan dari user kita dapat melakukannya dengan perintah readlnp, tetapi dengan data/variabel bertipe record kita tidak dapat melakukannya sesederhana itu. Untuk mengakses fiel-field pada suatu variabel bertipe record dapat dilakukan dengan dua cara dengan menggunakan operator/notasi titik Syntax secara umum nama_variabel_record . nama_field Contoh berikut adalah sah readln readln = ‘AMIKOM’; banyak[1]. nim = 5558; banyak[6].nama = ‘YOGYAKARTA’; dengan menggunakan statemen pembatas with … do Syntax secara umum with nama_variabel do begin lakukan operasi terhadap field-field —– —– end; Contoh berikut adalah valid with satu do readlnnama with satu do begin readlnnama;{sama artinya dengan readln readlnnim; readlnusia; jml_saudara = 5; {sama artinya dengan = 5} nama= ‘AKU’ end; with banyak[5] do begin readlnusia; readlnnama; end; Kembali ke atas Contoh program Program contoh_rekaman; uses crt; type mhs = record nim string[8]; nama string[30]; usia byte; jml_saudara 0..20; end; var siswa array[1..20] of mhs; i, n integer; begin clrscr; write‘Banyak data yang akan dimasukkan ‘; readlnn; {langkah pemasukan data} for i= 1 to n do begin clrscr; writeln‘Data ke ‘,i; with siswa[i] do begin write‘ NIM ‘;readlnnim; write‘NAMA ‘;readlnnama; write‘USIA ‘;readlnusia; write‘SAUDARA ‘;readlnjml_saudara; end; end; {penampilan data} clrscr; writeln‘DATA YANG ANDA MASUKKAN ‘; writeln; for i= 1 to n do begin writesiswa[i].nim11; writesiswa[i].nama23; writesiswa[i].usia5; writesiswa[i].jml_saudara5; writeln; end; readln; end.  Ilustrasi website. Foto Le Buzz/UnsplashBelajar mengenai website akan berbicara tentang contoh web statis atau pun dinamis. Kedua bentuk web tersebut memiliki ciri yang berbeda. Saat ini, kehadiran website membuat pekerjaan manusia semakin lebih mudah. Banyak informasi yang diperoleh dari jutaan website di seluruh dunia. Website sendiri adalah sekumpulan halaman web yang ditampilkan dengan sebuah domain. Website akan disimpan di dalam server atau hosting sehingga bisa diakses dengan jaringan internet, seperti yang biasa kita lakukan sehari-hari. Pada website sendiri, terdapat istilah web statis dan web dinamis. Apa saja perbedaan antara keduanya? Kamu akan mengetahuinya di artikel How To Tekno kali ini lengkap dengan contoh web statis HTML dan Web Statis dan DinamisIlustrasi membuka website. Foto KOBU Agency/UnsplashSebuah halaman web akan berisi informasi yang berisi teks, gambar, atau lainnya dalam format HTML. Hal ini bertujuan untuk menarik perhatian pembaca agar mengunjungi web tersebut. Mengutip Modul Pelatihan dan Pengembangan Website yang diterbitkan oleh Universitas Padjajaran, sebuah website terbagi menjadi dua jenis, yaitu web statis dan dinamis. 1. Pengertian dan Contoh Coding Web StatisApa yang dimaksud dengan web statis adalah sebuah website yang berisi halaman dengan konten yang harus di-edit secara manual. Laman web ini biasanya masih menggunakan format HTML. Isi informasi di dalam web statis tidak berubah seiring bergantinya hari. Artinya, informasi di dalam web ini selalu sama dan menampilkan hal serupa kepada tiap pengunjung. Dari pengertian tersebut, mungkin kamu sudah tahu apa saja contoh web statis. Web yang hanya menampilkan informasi dari suatu perusahaan saja adalah salah satu dari contoh web statis. Selain itu, halaman utama Google juga contoh web statis karena tidak ada perubahan data atau informasi di Pengertian dan Contoh Web DinamisSekarang, mari kita beralih membahas web dinamis. Kebalikan dari web statis, web dinamis justru selalu berubah-ubah, bahkan tiap detiknya. Setiap pengunjung juga akan mendapati perbedaan informasi yang diperoleh. Contoh dari web dinamis yang biasa kita kunjungi adalah Facebook, Twitter, dan media sosial lainnya. Jika sebelumnya, halaman utama Google adalah contoh web statis, maka ketika pengguna melakukan penelusuran, maka jenis web tersebut adalah dinamis. Website sangat Penting untuk Kegiatan MasyarakatIlustrasi website. Foto Igor Miske/UnsplashKehadiran website ini mengubah segala informasi yang awalnya diperoleh secara manual, kini bisa lebih cepat. Ada banyak manfaat yang dapat kamu peroleh dengan adanya website, di antaranya adalah1. Menampilkan Informasi Profil PerusahaanSaat ini, banyak perusahaan yang menampilkan profil perusahaan di internet guna menyebarkan informasi dan mengiklankan perusahaan tersebut. Biasanya, informasi tersebut berisi sejarah perusahaan, kontak, visi dan misi, hingga struktur institusi. 2. Portal BeritaPerkembangan zaman membuat semuanya menjadi digital, salah satunya adalah penyebaran berita. Banyak portal berita di internet yang bisa kamu kunjungi. Portal berita adalah salah satu contoh web dinamis. 3. E-commerceSelain portal berita, e-commerce yang sudah sangat menjamur ini adalah salah satu contoh perkembangan zaman. Website e-commerce membuat kamu tidak lagi perlu belanja secara langsung. Selain tiga contoh di atas, masih banyak keuntungan lainnya yang bisa kita rasakan dengan adanya website, baik itu statis ataupun dinamis. Setelah membaca artikel mengenai penjelasan web, bisakah kamu sebutkan contoh web statis dan dinamis lainnya? Penjelesan Semua Hal Yang Berhubungan Dengan Struktur DataStruktur data memegang peran penting dalam teknik pemrograman. Pemilihan struktur data yang tepat dapat meningkatkan efisiensi dan efektifitas sebuah program. Dalam teknik pemrograman, Struktur data adalah tata letak data yang berisi kolom-kolom data, baik itu kolom yang tampak oleh pengguna user atau pun kolom yang hanya digunakan untuk keperluan pemrograman yang tidak tampak oleh pengguna. Setiap baris dari kumpulan kolom-kolom tersebut dinamakan catatan record. Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai masukan dari pengguna, dan juga ada kolom yang lebarnya tetap. Dengan sifatnya ini, sebuah struktur data dapat diterapkan untuk pengolahan database misalnya untuk keperluan data keuangan atau untuk pengolah kata word processor yang kolomnya berubah secara dinamis. Contoh struktur data dapat dilihat pada berkas-berkas lembar-sebar spreadsheet, pangkal-data database, pengolahan kata, citra yang dipampat dikompres, juga pemampatan berkas dengan teknik tertentu yang memanfaatkan struktur pengertian lain, Struktur Data dapat juga di sebut sebagai suatu kumpulan objek-objek data yang memiliki aturan terorganisir yang kemudian di golongkan berdasarkan operasi-operasi untuk memanipulasinya. Contoh objek data tersruktur adalah Array, Record, Stack, Queue, Tree, PENTING UNTUK SUATU TIPE DATA TERSTUKTUR YAKNI a. Jumlah KomponenBerdasarkan jumlah komponen selama eksekusi program, maka dapat dikelompokkan menjadi – Struktur Data Statis Jumlah komponennya tidak berubah– Struktur Data Dinamis Jumlah komponennya dapat berubahb. Tipe untuk setiap komponennyaApabila tipe data untuk seluruh komponennya harus sama, maka disebut Struktur Data Homogen, dan bila dimungkinkan komponennya mempunyai tipe data yang berbeda-beda, maka disebut Struktur Data Nama-nama untuk memilih komponenHampir semua struktur data menyediakan operasi untuk mengakses komponen secara individu. Pada suatu array kumpulan data yang mempunyai tipe sama, hal ini dilakukan dengan sebuah indeks berupa Jumlah maksimum komponenTidak semua jenis struktur data harus ditentukan jumlah maksimum komponen, namun untuk sebuah tipe data dinamis mungkin perlu ditentukan dengan Pengorganisasian semua komponennyaSusunan yang paling umum adalah berupa barisan linier seperti pada array berdimensi 1, record, list, stack dan file. Selanjutnya ada yang dapat dikembangkan menjadi struktur non linier seperti array multi dimensi dan juga pohon/ Data, meliputiØ Struktur data sederhana, misalnya array dan Array adalah koleksi data yang tipenya sama, tersusun dalam bantuk barisan linier berurutan sequence dan jumlah elemen atau datanya tidak berubah statis sesuai deklarasi awal. Semua elemen array diidentifikasikan dengan sebuah nama nama array dan untuk setiap elemennya diidentifikasikan dengan sebuah Record adalah Struktur data yang tersusun atas elemen-elemen yang jumlahnya tertentu dan tipe data elemennya dapat berbeda-beda. Elemen sebuah record disebut field. Record dan array merupakan struktur data yang panjangnya tertentu statis.Ø Struktur data majemuk , yang terdiri dariStruktur data linier Stack, Queue, serta List dan Multilistv Stack TumpukanStack adalah struktur data linear dimana penambahan atau pengurangan komponen dilakukan di satu ujung saja. Stack merupakan suatu bentuk khusus dari linear list di mana operasi penyisipan dan penghapusan atas elemen-elemennya hanya dapat dilakukan pada satu sisi saja yang disebut sebagai “TOP”. Stack juga merupakan struktur data yang seolah olah data ditempatkan di atas data yang lain. Diibaratkan seperti menumpuk piring, maka data yang baru datang akan ditempatkan di atas data yang 2 operasi dasar yang didefinisikan pada stack, yaitu 1. PUSH Operator ini berfungsi untuk menambahkan satu elemen ke dalam stack. Notasi yang digunakan adalah PUSHE,S Artinya menambahkan elemen E ke dalam stack S. Elemen yang baru masuk ini akan menempati posisi TOP. Jadi TOPPUSHE,S = dari operasi ini jumlah elemen dalam stack akan bertambah, artinya NOELS menjadi lebih besar atau stack menjadi tidak kosong ISEMPTYPUSHE,S = false.2. POP Operator ini berfungsi untuk mengeluarkan satu elemen dari dalam stack. Notasinya POPSElemen yang keluar dari dalam stack adalah elemen yang berada pada posisi TOP. Akibat dari operasi ini jumlah elemen stack akan berkurang atau NOELS berkurang dan elemen pada posisi TOP akan berubah. Operator POP ini tidak dapat digunakan pada stack kosong, artinya POPCREATES = error Queue AntrianQueue Antrian adalah struktur data linear dimana penambahan komponen dilakukan di satu ujung, sementara pengurangan dilakukan di ujung lain yang satu lagi. Queue merupakan struktur data yang seolah olah penempatan datanya seperti orang mengantri di loket. Data yang baru akan datang ditempatkan yang paling ListList adalah kumpulan objek data yang tipe datanya sama, tersusun dalam bentuk barisan linier berurutan dan elemen-elemennya dapat di hapus atau di tambahkan secara dinamis. Non linier Pohon Biner dan Tree PohonTree merupakan struktur data yang menempatkan data seperti pohon biner , yaitu pohon yang hanya memiliki 2 cabang. Implementasinya menggunakan pointer dua link PADA STRUKTUR DATA YAKNI a. Operasi seleksi komponenProses pada struktur data seringkali merupakan proses pada masing-masing komponen untuk kemudian diproses dengan operasi primitive atau prosedur dan fungsi yang didefinisikan oleh programmer. Operasi seleksi komponen adalah operasi untuk mengakses komponen dan membuatnya tersedia untuk pemrosesan dengan operasi yang lain. Operasi ini dapat dibedakan menjadi operasi akses secara random dimana komponen struktur data yang diakses dapat berganti-ganti, dan operasi akses secara berurutan, dimana komponen-komponen diakses satu demi satu dalam urutan/rangkaian Operasi struktur data secara keseluruhanOperasi ini memungkinkan mengambil struktur data secara keseluruhan sebagai argumennya dan menghasilkan struktur data yang Penyisipan dan Penghapusan komponenOperasi ini akan mengubah jumlah komponen dan berpengaruh pada representasi dan pengelolaan Pembuatan dan penghapusan struktur data. Saat ini bahasa pemrograman semakin banyak dipelajari oleh berbagai kalangan, khususnya siswa dan mahasiswa jurusan IT. Dalam bahasa pemrograman sendiri, ada istilah Algoritma dan Struktur Data. Apa itu sebetulnya algoritma dan struktur data? Dalam ilmu komputer dan matematika, Algoritma adalah urutan atau langkah untuk melakukan perhitungan atau dapat juga digunakan dan diimplementasikan untuk memecahkan masalah yang ditulis secara berurutan. Jadi, algoritma pemrograman adalah urutan atau langkah untuk menyelesaikan masalah pemrograman komputer. Mengenal Lebih Jauh Apa itu Algoritma dan Struktur Data Ketahui dan Pahami Dasar-Dasar Algoritma dan Struktur DataJenis-Jenis Struktur DataSederhanaArrayRecordMajemukMajemuk LinearMajemuk Non-LinearPenutupRelated posts Mengenal Lebih Jauh Apa itu Algoritma dan Struktur Data Didalam ilmu komputer, pemahaman tentang struktur data yang berkembang selama ini yaitu cara menyimpan, mengatur, dan mengelola data dalam media penyimpanan komputer sehingga data dapat digunakan secara efisien. Sedangkan jika didefinisikan lebih jauh lagi, pengertian struktur data merupakan tata letak data yang berisi kolom data, baik kolom yang terlihat oleh pengguna atau kolom yang hanya digunakan untuk keperluan pemrograman yang tidak terlihat oleh pengguna. Setiap baris kumpulan kolom disebut catatan. Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai dengan input pengguna dan ada juga kolom yang lebarnya diperbaiki. Sesuai sifatnya, struktur data dapat diterapkan untuk pemrosesan basis data, misalnya untuk tujuan data keuangan, atau untuk pengolah kata. Strutur data ini kolomnya berubah-ubah secara dinamis. Contoh struktur data dapat dilihat dalam spreadsheet, database, pengolah kata, gambar terkompresi, dan mengompresi file dengan teknik tertentu yang memanfaatkan struktur data. Contoh tabel yang berisi kolom dan baris . Sumber Kemudian jika kita menganalogikan pemahaman algoritma ini ke tingkat yang lebih spesifik, maka algoritma dapat diartikan sebagai kumpulan langkah-langkah. Algoritma di dunia nyata dapat mencakup bahasa apa pun. Contoh dari algoritma yaitu Ketika Anda ingin pergi ke sekolah, kuliah atau bekerja, mulai dari bangun tidur, terus mandi, kemudian sarapan, kemudian pergi dengan kendaraan sampai Anda tiba di tujuan. Dalam pemrograman komputer, hal yang paling penting untuk dipahami adalah bagaimana logika kita dalam memproses pola pikir untuk menemukan solusi, inovasi, dan bahkan untuk menyelesaikan masalah pemrograman yang akan dibuat itu secara berurutan. Contoh lainnya yaitu banyak masalah matematika mudah jika diselesaikan secara tertulis, tetapi cukup sulit jika kita terjemahkan ke dalam pemrograman. Dalam hal ini, algoritma dan logika pemrograman akan sangat penting dalam menyelesaikan masalah-masalah yang ada. Contoh algoritma. Sumber Ketahui dan Pahami Dasar-Dasar Algoritma dan Struktur Data Tetapi jika kita menggambarkannya dengan cukup rinci, definisi struktur data dibagi menjadi dua kata yang terpisah, masing-masing memiliki tujuan, arah, dan fungsi sendiri. Dalam hal ilmu komputer, struktur data adalah cara menyimpan, mengatur, dan mengelola data dalam media penyimpanan komputer sehingga data dapat digunakan secara efisien. Dalam teknik pemrograman, struktur data berarti tata letak data yang berisi kolom data, baik kolom yang terlihat oleh pengguna atau kolom yang hanya digunakan untuk tujuan pemrograman yang tidak terlihat oleh pengguna. Setiap baris kumpulan kolom disebut catatan. Lebar kolom untuk data dapat berubah dan bervariasi. Ada kolom yang lebarnya berubah secara dinamis sesuai dengan input pengguna dan ada juga kolom yang lebarnya diperbaiki. Jenis-Jenis Struktur Data Dalam perkembangannya ada beberapa jenis-jenis struktur data yang perlu kita ketahui. Lalu apa saja sih jenis-jenis struktur data yang harus kita pahami itu. Berikut beberapa jenis-jenis struktur data. Sederhana Jenis struktur data sederhana dibagi menjadi kebeberapa lingkup kecil lagi. Strukdur data sederhana dibagi menjadi dua. Contoh array dan record. Sumber Duniailkom Array Array adalah struktur data statis yang menyimpan satu set elemen dengan tipe yang sama. Setiap elemen diakses langsung melalui indeksnya. Indeks array harus berupa tipe data yang menyatakan urutan, misalnya integer atau karakter. Jumlah elemen array harus diketahui sebelum program dijalankan. Tipe elemen array dapat berupa tipe sederhana, tipe terstruktur atau tipe array lainnya. Nama array lainnya adalah array, tabel, atau vektor. Record Struktur data record adalah kumpulan data yang terdiri dari beberapa bidang dengan berbagai jenis data. Majemuk Pada perkembangan selanjutnya, struktur data dibuat semakin kompleks. Dari struktur data yang sederhana kini mejadi struktur data majemuk. Pada struktur data majemuk ada yang linear dan non-linear. Contoh multilist. Sumber Majemuk Linear Stack Stack adalah daftar linear yang dikenal sebagai elemen puncak top. Aturan penyisipan dan penghapusan elemen tertentu penyisipan selalu dilakukan “atas” top dan penghapusan selalu dilakukan pada “atas”. Karena aturan penyisipan dan penghapusan seperti itu, “top” adalah satu-satunya alamat di mana operasi terjadi. Elemen terakhir yang ditambahkan akan menjadi elemen yang akan dihapus. Queue Queue adalah daftar linier yang dikenali sebagai elemen pertama head dan elemen terakhir tail. Penghapusan elemen didefinisikan sebagai penyisipan setelah elemen terakhir. Penghapusan selalu dilakukan pada elemen pertama dengan satu elemen dapat diakses melalui informasi “next”. List dan Multi List Daftar dan Multi Daftar adalah sekumpulan daftar linier dengan elemen-elemen dengan tipe yang sama. Daftar ini memiliki urutan tertentu, yang masing-masing elemen terdiri dari 2 bagian. Majemuk Non-Linear Pada struktur data majemuk non-linear dibagi mejadi dua. Berikut 2 pembagian strutur data majemuk non-linear. Contoh tree dalam bahasa java. Sumber Binary-Tree Pohon Biner Binary-Tree adalah himpunan terbatas yang mungkin kosong atau terdiri dari simpul yang disebut root. Pohon biner terdiri dua himpunan terpisah yang merupakan pohon biner yang disebut sebagai sub-pohon kiri dan sub-pohon kanan pohon biner yang merupakan . Pohon biner adalah jenis struktur data yang sangat penting dan sering ditemukan dalam berbagai aplikasi. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul memiliki paling banyak dua anak, dan mungkin tidak memiliki anak. Istilah yang digunakan sama dengan istilah pada pohon pada umumnya. Grafik Struktur data grafik adalah yang paling umum. Jika struktur linear memungkinkan kita untuk mendefinisikan keterhubungan yang berurutan antara entitas data. Maka pada struktur pohon data memungkinkan kita untuk mendefinisikan keterkaitan data secara hierarkis. Maka pada struktur grafik memungkinkan mendefinisikan koneksi tak terbatas antara entitas data. Penutup Itulah pembahasan singkat tentang memahami struktur data dalam 10 menit. Sekarang kalian sudah paham dengan struktur data itu penjelasannya bagaimana kan? Semoga bermanfaat dan jangan lupa tekan tombol sharenya. Sumber Gambar Utama Related posts

sebutkan contoh struktur data statis dan dinamis