Google Play badge

array at mga naka-link na listahan


Mga Array at Naka-link na Listahan

Maligayang pagdating sa aming aralin sa mga array at naka-link na listahan. Sa araling ito, matututunan natin ang dalawang simpleng paraan ng pag-imbak at pag-aayos ng data. Isipin na mayroon kang isang hilera ng mga kahon ng laruan o isang linya ng mga locker sa paaralan. Ang mga array at naka-link na listahan ay gumagana sa katulad na paraan. Tinutulungan nila kaming panatilihing maayos at madaling mahanap ang mga bagay. Ang araling ito ay isinulat sa simpleng wika na may mga pang-araw-araw na halimbawa upang matulungan kang madaling maunawaan ang mga ideyang ito.

Panimula

Ang mga istruktura ng data ay tumutulong sa mga computer na mag-imbak at mag-ayos ng impormasyon. Dalawang mahalagang istruktura ng data ang mga array at naka-link na listahan. Maaari mong isipin ang isang array bilang isang hilera ng mga kahon, at isang naka-link na listahan bilang isang hanay ng mga konektadong pahiwatig sa isang treasure hunt. Parehong nakakatulong sa amin ang mga ito na subaybayan ang maraming item, tulad ng mga laruan, aklat, o kahit na ang iyong mga paboritong meryenda.

Pag-uusapan natin kung ano ang isang array, kung ano ang isang naka-link na listahan, kung paano gumagana ang mga ito, at kung paano sila naiiba. Makakakita rin tayo ng mga halimbawa sa totoong mundo na ginagawang malinaw ang mga ideyang ito hangga't maaari.

Ano ang isang Array?

Ang array ay isang koleksyon lamang ng mga item. Ito ay tulad ng isang hilera ng mga kahon kung saan ang bawat kahon ay naglalaman ng isang bagay. Halimbawa, isipin ang isang set ng limang kahon na nakahilera sa isang hilera. Maaari mong gamitin ang bawat kahon upang mag-imbak ng paboritong laruan o meryenda.

Ang bawat kahon sa isang array ay may isang numero na tinatawag na isang index. Ang unang kahon ay karaniwang may bilang na 0, ang susunod ay 1, pagkatapos ay 2, at iba pa. Tinutulungan ka ng pagnumero na ito na mabilis na makahanap ng isang partikular na item. Halimbawa, kung gusto mo ang item sa ikatlong kahon, tingnan mo lang ang kahon na may index 2.

Narito ang isang simpleng formula upang ipaliwanag kung paano namin mahahanap ang isang item sa isang array. Kung ang unang kahon ay nasa isang panimulang punto, kung gayon ang address ng anumang item ay maaaring isipin bilang:

\( \textrm{Address}(A(i)) = \textrm{Address}(A(0)) + i \times \textrm{(laki ng isang item)} \)

Sinasabi nito sa amin na upang lumipat mula sa unang kahon patungo sa kahon na gusto namin, magbibilang ka ng pasulong sa isang tiyak na bilang ng mga puwang.

Mga Katangian ng Array

Mag-isip ng isang hanay tulad ng mga upuan sa isang maliit na sinehan. Ang bawat upuan ay may numero, at maaari kang mabilis na pumunta sa iyong upuan kung alam mo ang numero nito.

Araw-araw na Halimbawa ng Array

Isipin na ang iyong paaralan ay may isang hilera ng mga locker, bawat isa ay may natatanging numero. Kapag ilalagay mo ang iyong bag sa iyong locker, gagamitin mo ang partikular na numero sa locker. Sa isang array, ang bawat locker ay parang isang kahon, at ang numero ay nagsasabi sa iyo ng eksaktong lugar kung saan naka-imbak ang iyong bag—o data.

Ano ang Linked List?

Ang isang naka-link na listahan ay isa pang paraan upang mag-imbak ng mga item. Iba ito sa array dahil hindi ito gumagamit ng mahabang hilera ng mga nakapirming kahon. Sa halip, gumagamit ito ng mga espesyal na kahon na tinatawag na mga node. Ang bawat node ay may hawak na item at mayroon ding pointer na nagsasabi sa iyo kung nasaan ang susunod na node.

Isipin na ikaw ay nasa isang treasure hunt. Ang bawat bakas na makikita mo ay nagsasabi sa iyo kung saan nakatago ang susunod na bakas. Sa isang naka-link na listahan, ang bawat node ay parang isa sa mga pahiwatig na ito. Kapag nagsimula ka sa unang clue, susundin mo ang pointer mula sa isang node patungo sa susunod hanggang sa makita mo ang kailangan mo.

Maaari mong isipin ang bawat node bilang isang maliit na sobre. Ang sobre ay may dalang card (ang data) at isang tala (ang pointer). Sinasabi sa iyo ng talang ito kung aling sobre ang susunod sa linya.

Paano Gumagana ang isang Naka-link na Listahan

Tingnan natin ang isang simpleng paraan ng pagsulat kung ano ang isang node:

Node = {data, pointer)

Ang "data" sa isang node ay ang impormasyong nakaimbak, at ang "pointer" ay parang isang arrow na nagdidirekta sa iyo sa susunod na node. Hindi tulad ng isang array, ang isang naka-link na listahan ay hindi nangangailangan ng lahat ng mga node na magkatabi sa memorya; maaari silang maging kahit saan, hangga't ikinonekta sila ng mga pointer.

Mga Uri ng Naka-link na Listahan

Mayroong iba't ibang mga istilo ng mga naka-link na listahan. Narito ang tatlong karaniwang uri:

Real-World na Halimbawa ng Linked List

Isipin na sinusundan mo ang isang mapa ng kayamanan. Ang bawat hakbang sa mapa ay nagsasabi sa iyo kung saan ang susunod na hakbang. Kahit na magdagdag ka ng karagdagang clue o mag-alis ng isa, maaari ka pa ring sumunod sa pamamagitan ng pagbabasa ng clue sa bawat card. Ito ay kung paano gumagana ang isang naka-link na listahan. Ang bawat node (o clue) ay konektado sa susunod, na nagpapahintulot sa iyo na lumipat sa listahan nang paisa-isa.

Paghahambing sa Pagitan ng Mga Array at Mga Naka-link na Listahan

Ang mga array at naka-link na listahan ay parehong nakakatulong sa amin na mag-imbak ng mga item, ngunit ginagawa nila ito sa iba't ibang paraan. Narito ang ilang paghahambing:

Mga Kalamangan at Kahinaan

Ang bawat istraktura ng data ay may magagandang bahagi at mga hamon nito. Ang pag-unawa sa mga ito ay nakakatulong sa iyong piliin ang pinakamahusay na gagamitin.

Mga array:

Mga kalamangan:

Mga disadvantages:

Mga Naka-link na Listahan:

Mga kalamangan:

Mga disadvantages:

Nagtatrabaho sa Arrays

Tingnan natin kung paano natin magagamit ang isang array sa simpleng paraan. Ipagpalagay na gusto mong iimbak ang iyong limang paboritong kulay. Gumawa ka ng array na may limang kahon. Pagkatapos ay ilagay mo ang bawat kulay sa isang kahon sa pagkakasunud-sunod. Halimbawa:

Ngayon, kung gusto mong malaman kung aling kulay ang nasa Kahon 2, tingnan mo lang ang kahon na iyon at makikita mo ang "Berde." Ang madaling pag-access na ito ay isa sa mga pinakamahusay na bahagi ng paggamit ng array.

Paggawa gamit ang Mga Naka-link na Listahan

Ngayon, tingnan natin ang isang naka-link na listahan. Isipin ito bilang isang treasure hunt kung saan magsisimula ka sa isang clue at pagkatapos ay sundin ang mga tagubilin upang mahanap ang susunod. Sa isang naka-link na listahan, nagsisimula tayo sa isang node na naglalaman ng ilang data. Ang node na ito ay may pointer na nagpapakita kung aling node ang susunod.

Halimbawa, isipin na mayroon kang tatlong node sa isang naka-link na listahan na nagsasabi ng isang masayang kuwento:

Magsisimula ka sa Node 1 at sundin ang pointer (ang clue) sa Node 2, pagkatapos ay sa Node 3. Kahit na gusto mong magdagdag ng bagong clue sa pagitan ng alinman sa mga ito, kailangan mo lang baguhin ang ilang pointer. Ginagawa nitong napaka-flexible ang mga naka-link na listahan.

Visualizing Arrays at Linked Lists

Makakatulong na isipin ang mga istruktura ng data na ito sa iyong isipan. Ilarawan ang isang array bilang isang mahabang hilera ng malinaw at may label na mga kahon sa isang istante. Ang bawat kahon ay naglalaman ng isang bagay at may isang nakapirming lugar. Ngayon, isipin ang isang naka-link na listahan bilang isang string ng mga card. Ang bawat card ay may tala na nagsasaad kung saan nakatago ang susunod na card. Sa isang array, maaari kang direktang tumalon sa isang partikular na kahon ayon sa numero nito. Sa isang naka-link na listahan, kailangan mong sundin ang mga card sa pagkakasunud-sunod.

Araw-araw na Aplikasyon

Ang mga array ay ginagamit sa maraming pang-araw-araw na bagay. Halimbawa, isipin ang isang kalendaryo. Ang isang kalendaryo ay may nakapirming bilang ng mga araw sa bawat linggo, at ang mga araw na iyon ay nakaayos nang sunud-sunod. Kapag tiningnan mo ang kalendaryo, alam mo kung aling araw ang nasaang lugar.

Ginagamit ang mga naka-link na listahan kapag maaaring magbago ang bilang ng mga item sa paglipas ng panahon. Isipin ang isang linya ng mga tao na naghihintay sa isang ice cream truck. Minsan ang mga bagong tao ay sumasali sa linya, at kung minsan ay may umaalis. Maaaring lumaki o lumiit ang linya nang hindi kinakailangang gumawa ng bagong nakapirming istraktura. Ginagawa nitong lubhang kapaki-pakinabang ang mga naka-link na listahan sa mga sitwasyon kung saan madalas na nagbabago ang mga bagay.

Pag-customize ng Data Storage

Ang pagpili sa pagitan ng mga array at naka-link na listahan ay depende sa kung ano ang kailangan mong gawin sa iyong data. Kung alam mong palagi kang magkakaroon ng nakapirming bilang ng mga item—tulad ng mga araw sa isang linggo—ang isang array ay napakaangkop. Gayunpaman, kung magbabago ang dami ng data at kailangan mo ng istraktura na madaling iakma, ang isang naka-link na listahan ay magiging isang mas mahusay na pagpipilian.

Halimbawa, sa isang laro sa computer, maaaring gumamit ng array para iimbak ang mga score para sa bawat level dahil ang bilang ng mga level ay naayos. Sa kabilang banda, maaaring gumamit ng naka-link na listahan upang pamahalaan ang isang listahan ng mga aksyon o galaw ng manlalaro, na maaaring lumago habang nagpapatuloy ang laro.

Paano Magpasya kung Alin ang Gagamitin

Kapag kailangan mo ng mabilis na pag-access sa mga item ayon sa kanilang posisyon, ang mga array ay ang pinakamahusay na pagpipilian. Ito ay dahil maaari kang direktang tumalon sa anumang lugar kung alam mo ang numero nito. Gayunpaman, kapag kailangan mong madalas na magdagdag o mag-alis ng mga item, mas nakakatulong ang mga naka-link na listahan dahil pinapayagan ka nitong baguhin ang listahan nang hindi inililipat ang maraming item.

Pag-isipan ito sa ganitong paraan: kung mayroon kang isang sticker album na may nakatakdang bilang ng mga pahina, ang isang array ay katulad ng album na iyon. Ngunit kung mayroon kang dumaraming koleksyon ng mga postkard na idinaragdag mo sa isang bulletin board, mas ganoon ang isang naka-link na listahan dahil madali kang makakapagdagdag ng bagong postcard sa pagitan ng iba nang hindi muling inaayos ang buong board.

Mga Pangunahing Punto at Buod

Suriin natin ang mga pangunahing punto ng ating aralin:

Mga array:

Mga Naka-link na Listahan:

Mga Pagkakaiba at Paggamit:

Sa buod, ang mga array at naka-link na listahan ay dalawang mahalagang istruktura ng data na ginagamit upang ayusin ang data. Gumagana ang mga array tulad ng isang hilera ng mga nakapirming, may bilang na mga kahon, habang ang mga naka-link na listahan ay gumagana tulad ng isang treasure hunt kung saan ang bawat hakbang ay nagsasabi sa iyo kung saan ang susunod na pupuntahan. Ang parehong mga pamamaraan ay may sariling lakas at ginagamit sa iba't ibang mga sitwasyon batay sa mga pangangailangan ng gawain.

Ang pag-unawa sa dalawang paraan ng pag-iimbak ng data ay lubhang kapaki-pakinabang. Maraming mga computer program, laro, at application ang gumagamit ng mga array at naka-link na listahan sa background. Sa pamamagitan ng pag-aaral kung paano gumagana ang mga ito, nakakakuha ka ng insight sa paraan ng pag-aayos at pamamahala ng mga computer ng data.

Tandaan: simple at mabilis ang mga array kapag naayos ang istraktura, habang nag-aalok ang mga naka-link na listahan ng flexibility kapag nagbago ang data. Iniisip mo man ang isang hanay ng mga locker o isang treasure trail ng mga pahiwatig, ang mga konseptong ito ay nakakatulong sa amin na maunawaan kung paano iniimbak at ginagamit ang impormasyon araw-araw.

Ang araling ito ay nagbigay sa iyo ng malinaw na ideya kung ano ang mga array at naka-link na listahan. Habang patuloy kang nag-aaral at nag-e-explore ng computer science, ang mga pangunahing ideyang ito ay makakatulong sa iyong maunawaan ang mas kumplikadong mga paksa. Sila ang mga bloke ng pagbuo ng mas advanced na mga istruktura ng data at algorithm.

Buod ng Mga Pangunahing Punto:

Salamat sa pagbabasa ng araling ito sa mga array at naka-link na listahan. Umaasa kami na nasiyahan ka sa pag-aaral tungkol sa mga pamamaraang ito para sa pag-iimbak ng data sa isang malinaw at simpleng paraan. Habang lumalaki at natututo ka pa, tandaan ang mga pangunahing istrukturang ito at kung paano nakakatulong ang mga ito na gumana nang mahusay ang mga computer.

Download Primer to continue