Tuesday, 3 March 2020

ringkasan data struct 3 maret


Nama : Sofyan Adrianto
NIM : 2301869121
Jurusan : TI dan Statistika

Hari ini saya belajar:
Perintah malloc digunakan untuk memesan memori.
Dalam single linked list terdapat sebuah perjanjian yaitu head(selalu pegang paling depan) yang merupakan awal dari linked list(paling depan),biasanya tidak boleh berpindah,jika berpindah bisa terjadi salah coding dan setiap node tidak memiliki tali penghubung. Ada juga yang namanya current(biasa disingkat curr) ini bisa berpindah2 posisinya. Tail selalu pegang paling belakang. Nama tidak memengaruhi asalkan fungsinya sama seperti yang diatas.
Pemesanan memori atau yang biasa kita kenal malloc,bisa dilakukan sekali saja,jika kita menggunakan fungsi malloc yang sama berulang kali,maka memori yang dipesan bertambah banyak. Kesimpulannya jadi kurang efisien jika memesan memori berulang kali. Jadi yang harus kita lakukan adalah memesan memori (menggunakan malloc) dapat dilakukan sekali saja.
Setelah kita pesan memori, di dalam memori terdapat sebuah tempat untuk menaruh value. Value ini dapat kita isi dengan nilai seperti 10,20,30,dst.
Value tersebut dapat di print out ,berikut contoh coding singkatny
Curr= (struct data*)malloc(sizeof(struct data));
Curr->value = 10;
Printf(“%d\n”,Curr->value);
Harusnya angka 10 ter-print.
Ketika kita hanya memesan memori 1 kali,disaat kita  memasukkan nilai value yang baru = 20,maka nilai seblumnya,yaitu 10 akan terganti dengan 20.
Jika kita memesan memori berkali2,ketika kita ingin mengakses data pertama,it dtidak dapt dilakukan karna tidak ada jalan untuk kembali,karena memori itu sudah ditingglkan tapi memori itu masih ada dan gaakan pernah bisa dipakai. Intinya kita harus berhati2 dlm menggunakan malloc.
Prinsip sederhana linked list adalah bagaimana caranya supaya list yang sudah ditinggalkan tadi bisa diakses dan terhubung satu sama lain.
Jika kita ingin datanya menyatukan sebuah gerbong,dengan gerbong yang lain,maka kita harus tau dulu bahwa di dalam gerbong terdapat value. Dan kita dapat menggunakan next,untuk menyimpan alamat sebelah saya.dan alamat sebelahnya sebelah saya, dst. Karena next tugasnya menyimpan alamat di sebelahnya makanya next itu diberi pointer.
Kita dapat membua fungsi,misalnya namanya push atau insert atau apapun. Yang fungsinya untuk insert data. Misal kita membuat :
Push(10); maka gerbong pertama akan diisi nilai 10.
Dalam struct data ad 2 variabel yang bisa dikasih nilai yaitu,value dan next. Dimana value hrus diisi dengan integer,dan next harus diisi dengan alamat.
Untuk mengecek apakah list tersebut berhasil disambungkan kita bisa mengetahuinya melalui hasil dri print out nya.
Biasanya di data struct,bukan syntax yang error,tapi logicnya.
Kalau baru di push 1x, lalu kita next. Maka pas di run maka akan error. Kenapa dia bisa error? Karena disaat kita push 1x,maka head memang sudah ana valuenya. Namun ketika kita ketik head->next. Maka next nya kan null yaa,null kan tidak punya value. Tapi dri null itu kita mau akses valuenya, itu yang menyebabkan error.
Yang bisa kita print yaitu cth: head->value,head->next,curr->value,dll.
Buat hapus memori kita menggunakan syntax seperti free(curr). Kelebihannya linked list bisa mengemat memori,klo array gabisa dibuang.
Fungsi pop,berfungsi untuk menghapus dapat dilakukan dengan free. Namun perlu diingat bahwa free bukan berarti dibuang, bila data yang di free ingin digunakan sewaktu2 masih bisa.
Head sama tail Cuma bakal jadi satu kalo datanya sisa 1.
Double linked list, sama kayak single linked list. Tapi dia bisa mundur,ga Cuma searah. Tugas kita kalo ingin membuat double linked list adalah memastikan bahwa coding kita membuat setiap gerbong saling berkaitan(2arah) shg bisa maju dan mundur. Linked list bisa pnya 8 tangan,bisa ngecek 8 arah.
Circular linked list tail->next = head,head->prev=tail. Jadi muter gitu.

Tambahan dari bacaan di internet.
Stack
Stack atau tumpukan dapat diartikan sebagai suatu kumpulan data yang seolah-olah terlihat seperti ada data yang diletakkan di atas data yang lain. Kaidah utama dalam konsep stack adalah LIFO yang merupakan singkatan dari Last In First Out, artinya adalah data yang terakhir kali dimasukkan atau disimpan, maka data tersebut adalah yang pertama kali akan diakses atau dikeluarkan.

Operasi-operasi dasar dalam stack ada 2 yaitu operasi push dan pop:


  • Operasi push, berfungsi untuk memasukkan sebuah nilai atau data ke dalam stack. Sebelum sebuah nilai atau data dimasukkan ke dalamstack, prosedur ini terlebih dahulu akan menaikkan posisi top satu level ke atas. 
Queue
pengertian queue dalam struktur data
Queue atau antrian merupakan struktur data linear dimana penambahan komponen dilakukan disatu ujung, sementara pengurangan dilakukan diujung lain. Kaidah utama dalam konsep queue adalah FIFO yang merupakan singkatan dari First In First Out, artinya adalah data yang pertama kali dimasukkan atau disimpan, maka data tersebut adalah yang pertama kali akan diakses atau dikeluarkan.

Algoritma Stack
a. Operasi Push
Operasi push digunakan untuk menambahkan sebuah elemen baru ke atas tumpukan. Operasi ini dapat dilakukan jika tumpukan tidak penuh.  Algoritma operasi push pada stack adalah sebagai berikut:
  • Menentukan kondisi tumpukan, apakah tumpukan dalam keadaan kosong atau tidak.
  • Jika kosong maka mendeklarasikan data baru yang akan dimasukkan ke dalam tumpukan.
  • Memasukkan nilai data yang baru.
  • Melakukan perulangan untuk memasukkan data hingga batas penuh tumpukan.
  • Jika tumpukan sudah penuh maka selesai.
b. Operasi Pop
Operasi pop digunakan untuk menghapus elemen teratas dari tumpukan. Algoritma operasi pop pada stack adalah sebagai berikut:
  •  Melakukan pengecekan kondisi antrian, ada isi data atau tidak.
  •  Jika terdapat data pada antrian, maka lakukan penghapusan data dengan cara memindahkan head (elemen teratas tumpukan) ke elemen dibawahnya.
  • Kemudian menghapus elemen teratas tumpukan.
  • Jika tidak terdapat data pada tumpukan maka selesai.

Perbedaan stack dan queue
  • Stack merupakan tumpukan sedangkan queue merupakan antrian.
  • Stack bersifat LIFO (Last in first out) yang artinya data yang terakhir masuk adalah data yang pertama keluar sedangkan queue bersifat FIFO ( First in first out) yaitu data yang pertama masuk akan pertama kali keluar.
  • Perbedaan antara stack dan queue terdapat pada aturan penambahan dan penghapusan elemen. Pada stack, operasi penambahan dan penghapusan elemen dilakukan di satu ujung. Elemen yang terakhir kali dimasukkan akan berada paling dekat dengan ujung atau dianggap paling atas sehingga pada operasi penghapusan, elemen teratas akan dihapus paling awal (LIFO). Pada queue, operasi tersebut dilakukan di tempat yang berbeda. Penambahan elemen selalu dilakukan melalui salah satu ujung menempati posisi di belakang elemen-elemen yang sudah masuk sebelumnya atau menjadi elemen paling belakang. Sedangkan penghapusan elemen dilakukan di ujung yang berbeda, yaitu pada posisi elemen yang masuk paling awal atau elemen terdepan (FIFO).

  • Operasi pop, berfungsi untuk mengeluarkan atau menghapus nilai terakhir (yang berada pada posisi paling atas) dari stack, dengan cara menurunkan nilai top satu level ke bawah. [5] Berikut ilustrasi kerja pada operasi pop:




No comments:

Post a Comment