Kaedah traversal yang paling biasa digunakan ialah pernyataan for (terdapat juga kaedah rekursif dan while). Apabila kita berulang melalui tatasusunan, kita biasanya melakukan ini:
Ini ialah kaedah traversal yang paling biasa digunakan: traversal ke hadapan. Ia pergi dari item pertama ke item terakhir dalam tatasusunan.
Lalu mengapa drama hari ini juga menyebut traversal urutan terbalik?
Di sini saya perlu menyebut salah satu modul yang paling biasa digunakan antara komponen yang ditulis dalam drama kecil: acara. Digunakan untuk mencipta model acara tersuai, mengendalikan pemantauan dan pencetusan acara, mod penerbitan dan langganan (pub/sub) yang paling mudah. Oleh kerana baru-baru ini mendapati bahawa terdapat bahaya limpahan ingatan yang tersembunyi, kaedah tidak terikat pada asas asal perlu ditambah.
Oleh kerana fungsi panggil balik dengan nama acara yang sama diletakkan dalam tatasusunan yang sama, untuk menyahikat, anda hanya perlu mencari fungsi panggil balik yang sepadan dalam tatasusunan (fungsi panggil balik yang sama mungkin diikat beberapa kali) dan alih keluarnya.
Ia adalah keperluan yang sangat mudah, jadi adalah wajar untuk menulis kod yang serupa dengan yang berikut:
Adakah terdapat sebarang kod biasa, tetapi hasil keluaran akhir ialah: [1, 2, 2, 1, 1, 2]. Jelas sekali hasil pelaksanaan tidak seperti yang diharapkan.
Apa masalahnya?
Selepas analisis yang teliti, saya mendapati bahawa masalahnya terletak pada setiap kali perlawanan berjaya, selepas operasi penyingkiran dilakukan, item seterusnya yang akan diperiksa akan dilangkau, kerana setiap item berikutnya dalam tatasusunan bergerak ke hadapan dengan satu .
Saya menemui masalah, menukar kod dan melaraskan indeks jujukan (i) selepas melakukan operasi pengalihan keluar.
Masalahnya telah diselesaikan, tetapi saya masih merasakan bahawa mengubah suai indeks jujukan adalah goda bagi gelung for. Kemudian saya mendapat inspirasi, bang bang bang, dan menaip kod berikut:
Proses traversal kekal tidak berubah, satu-satunya perubahan ialah susunan traversal telah berubah, dan by the way, terdapat kurang satu jumlah pembolehubah.
Baiklah, saya akui bahawa apa yang saya tulis hari ini sangat mengarut, tetapi melalui contoh ini, saya akan mengingatkan anda semasa menulis kod pada masa hadapan, semasa proses traversal, jika ia melibatkan pengubahsuaian tatasusunan itu sendiri (penambahan dan pemadaman), reverse traversal ialah perbandingan Cara yang selamat untuk dilalui.
Mengekodkan nota, biarkan mereka mentertawakan diri sendiri nanti!
Sila nyatakan sumber semasa mencetak semula: http://bh-lay.com/blog/148c07761fa