Apakah mengalami masalah dengan struktur data yang umum untuk pemula? [Tutup]


17

Saya mengambil kursus kedua saya di Jawa. Kami memasuki struktur data. Saya telah melakukan tugas pada daftar tertaut, dan sekarang tumpukan. Saya mengalami kesulitan dengan daftar tertaut. Tumpukan memberi saya sedikit masalah, tetapi jauh lebih mudah.

Haruskah saya khawatir mengalami kesulitan dengan algoritma dan struktur data ini? Aku hanya merasa seperti aku tidak benar-benar menangkapnya.


Contoh dunia nyata dari Daftar Tertaut - stackoverflow.com/questions/644167/…
pramodc84

Jawaban:


44

Saya pikir, Anda tidak boleh menerima tidak memahami hal-hal ini, karena mereka benar-benar mendasar. Yang sedang berkata, Anda tidak memahami mereka tidak ada yang merasa buruk. Anda dapat menjelaskan daftar yang ditautkan kepada seorang anak. Jadi jika guru Anda gagal menjelaskannya kepada Anda, itu juga kesalahan mereka. Jadi Anda tidak perlu menghabiskan waktu untuk mengkhawatirkan, tetapi cobalah untuk menemukan orang, yang dapat menjelaskannya kepada Anda. Seringkali sesama siswa adalah guru yang jauh lebih baik daripada akademik penuh waktu.

Pikirkan Kereta

Bayangkan, Anda memiliki seperangkat gerbong kereta api, di mana setiap gerbong memiliki kapasitas yang cukup, untuk memuat satu data. Setiap gerbong memiliki semacam kait di ujungnya, yang dapat dipasang ke bagian depan gerbong lain.
Ini sebenarnya memberi Anda daftar tertaut:

  • daftar kosong: kereta yang tidak mengandung kereta (dan karena itu tidak membawa data)
  • menambahkan elemen: tambahkan kereta baru yang mengandung elemen di depan kereta dan kaitkan ke seluruh kereta
  • menghapus suatu elemen: temukan carriage yang mengandung elemen tersebut. Lepaskan itu (Anda mungkin perlu crane di sini :)), kaitkan kereta sebelum dengan kereta setelah.
  • mengganti elemen: cari carriage yang mengandung elemen lama. Tukarkan elemen lama dengan elemen baru.
  • memasukkan elemen satu demi satu: temukan carriage yang mengandung elemen setelah itu Anda ingin memasukkan. Masukkan kereta baru setelah itu, yang terhubung sesuai (kami tidak ingin kereta berantakan) dan memasukkan elemen baru ke dalamnya.

Berbeda dengan itu, Anda bisa menganggap array sebagai kereta dengan jumlah gerbong tertentu, yang tidak dapat diatur ulang dengan cara apa pun. Yang dapat Anda lakukan adalah mengubah data di dalamnya. Model ini juga menjelaskan banyak masalah yang dimiliki array:

  • Jika Anda ingin memasukkan satu elemen sebelum yang lain, Anda harus memindahkan semua elemen berikut ke carriage berikutnya.
  • Jika Anda ingin menghapus satu elemen, Anda harus memindahkan semua elemen berikut, satu kereta ke depan.
  • Jika Anda membutuhkan kereta dengan gerbong yang lebih banyak, Anda harus membuat gerbong baru, karena Anda tidak bisa hanya menambahkan gerbong. Di sisi lain, menemukan kereta dalam array jauh lebih mudah, karena Anda bisa memberi nomor secara permanen (urutannya tidak akan pernah berubah).

Adapun tumpukan: "Tumpukan" kurang struktur data, dari sebuah ide. Gagasan stack adalah, ia berfungsi seperti tumpukan buku. Anda hanya dapat meletakkan buku di atas tumpukan dan Anda hanya dapat mengambil buku teratas dari tumpukan (setidaknya jika buku-buku tersebut cukup berat).
Yang sedang berkata, daftar tertaut dapat digunakan sebagai tumpukan, jika Anda menganggap data di kereta sebagai buku, dan buku di kereta paling pertama sebagai bagian atas tumpukan.

Jadi saya harap ini membantu Anda. Mungkin tidak. Mungkin Anda lebih dari tipe visual. Dalam hal ini, saya sarankan Anda menemukan seseorang, yang pandai memberikan penjelasan visual dan menjelaskannya kepada Anda. Tidak akan butuh waktu lama, tetapi itu benar-benar layak.

Tidak apa-apa untuk berjuang dengan ini sekarang. Tetapi hanya menerimanya, bukanlah pilihan dalam jangka panjang.


2
Jawaban keren! Membuat saya sadar bahwa seseorang dapat mengajarkan struktur data dasar kepada anak-anak melalui flash / permainan lain dengan serangkaian tujuan untuk diselesaikan. Gagasan yang sama tentang kereta api juga dapat membantu anak-anak memahami angka biner, jika setiap gerbong kereta 2x lebih besar dan lebih kecil dari tetangganya.
Ayub

1
Oke, sekarang setelah itu, mari kita beralih ke struktur data dengan banyak tautan. Jadi kereta memiliki halangan di sisinya, yang dapat menghubungkan ke set mobil lain. Tapi rel untuk mobil-mobil semacam itu meluncur di samping trek pertama ...
Philip

12

Saya tidak akan mengatakan bahwa Anda "harus khawatir" tentang hal itu, tetapi fakta sederhana bahwa Anda mengakui kelemahan Anda menunjukkan bahwa Anda tahu persis di mana belajar lebih keras. Saya pikir Anda akan dilayani dengan baik oleh sikap itu dan akan baik-baik saja dalam jangka panjang.


6

Mengutip guru CSCI favorit saya:

"Panic, but panic early."

Struktur Data terdengar sulit, bukan? Bagi saya, itu terdengar abstrak dan agak rumit dan yang terpenting ... penting!

Struktur Data adalah program yang vital. Dan merupakan hal biasa untuk berjuang, tetapi teruskan! Selama Anda makan Wheaties Anda dan terus melakukannya, Anda akan mencapai pelangi dengan bagdiisi dengan di generic items bawahnya.


Panik dini akan menyiratkan putus? Setelah struktur data ada juga persyaratan matematika, algoritma, OS, AI, penyusun, teori perhitungan ... itu tidak membuat ibu-freaking lebih mudah, tapi mungkin fakta bahwa seseorang tidak lagi menjadi mahasiswa baru atau mahasiswa tahun kedua bahkan membantu meskipun banyak hal semakin sulit.
Ayub


3

Struktur Data adalah kelas "sulit" pertama yang saya ambil; kami menggunakan Fortran 77 bukan Jawa, tetapi konsepnya sebagian besar sama.

Butuh seminggu lebih lama dari teman sekelasku untuk memahami konsep daftar tertaut; Saya membesar-besarkan tugas, tetapi setelah beberapa sesi yang sedikit membuat frustrasi dengan profesor saya, akhirnya diklik (secara harfiah; saya mendengar "klik" di kepala saya ketika saya akhirnya mengerti).

Setiap orang memiliki masalah di suatu tempat dalam kurikulum CS mereka (kecuali mereka aneh). Jika Anda mengerti di mana kelemahan Anda dan bagaimana mengatasinya, Anda benar-benar tidak perlu khawatir.


1
Dont Panic, tetap bekerja dan Tunggu klik ...
NWS

2

Apakah Anda mengalami kesulitan memahami daftar tertaut, atau hanya masalah dengan implementasi Anda?

Bukan hal yang aneh bagi seorang programmer baru untuk mengalami kesulitan di sana, karena mungkin ini adalah pertama kalinya Anda harus berpikir tentang apa sebenarnya artinya ketika Anda menulis:

list.head = null;
Element e = new Element(...);
e.next = list.head;
list.head = e;

Saya mendapatkan semua diputar di ALGOL / W pada latihan yang sama, karena saya tidak mengerti semantik bahasa. Setahun kemudian, saya hampir tidak bisa mengingat mengapa saya mengalami kesulitan.


1

Ada pasti ada beberapa bidang pengembangan perangkat lunak yang Anda temukan lebih sulit daripada yang lain. Apakah itu algoritma tertentu, atau pola desain tertentu atau prosedur tertentu akan berbeda dari orang ke orang. Saya menemukan bahwa saya harus menggunakan sesuatu pada program nyata sebelum saya sepenuhnya memahaminya.

Saya akan lebih khawatir jika seseorang mengklaim mengetahui semuanya dan tidak pernah mengalami masalah dalam mempelajari sesuatu.

Secara pribadi saya sepertinya tidak pernah memiliki masalah dengan daftar yang ditautkan, tetapi kemudian saya bekerja pada sebuah program selama 8 tahun yang menggunakannya di mana - mana sehingga saya bekerja dengan mereka setiap hari. Selama Anda tahu di mana menemukan informasi yang Anda butuhkan untuk menyegarkan ingatan Anda dan mengetahui area di mana Anda memiliki "masalah" Anda harus baik-baik saja.


Saya juga berpikir itu akan membantu jika saya bisa berinteraksi dengan program yang menggunakan struktur data ini juga. Saya berada pada tahap di mana saya bertanya pada diri sendiri, mengapa ini berguna?
Brock

0

Saya mengalami masalah dengan kalkulus dan harus melakukannya untuk kedua kalinya. Kedua kalinya saya menemukan saya cerdas tetapi guru matematika pertama pada dasarnya tidak berguna :)

Anda akan menemukan banyak orang di bidang TI yang tidak dapat berkomunikasi dengan baik, bahkan para guru. Di sisi lain beberapa orang di IT benar-benar penulis hebat dan ahli komunikasi.

Kadang-kadang membaca di luar bisa sangat membantu. Buku komputer sangat bervariasi kualitasnya. Dapatkan di Amazon dan lihat buku apa yang disukai orang sebenarnya.

Semoga berhasil.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.