Массив болон холбосон жагсаалтын тухай бидний хичээлд тавтай морилно уу. Энэ хичээлээр бид өгөгдлийг хадгалах, зохион байгуулах хоёр энгийн аргыг сурах болно. Сургууль дээрээ тоглоомын хайрцаг эсвэл цуваа шүүгээтэй байна гэж төсөөлөөд үз дээ. Массив болон холбосон жагсаалтууд ижил төстэй байдлаар ажилладаг. Тэд бидэнд зүйлсийг цэвэрхэн, олоход хялбар байлгахад тусалдаг. Эдгээр санааг ойлгоход тань туслах үүднээс энэ хичээлийг өдөр тутмын жишээнүүдийн хамт энгийн хэлээр бичсэн болно.
Өгөгдлийн бүтэц нь компьютерт мэдээллийг хадгалах, зохион байгуулахад тусалдаг. Хоёр чухал өгөгдлийн бүтэц нь массив ба холбогдсон жагсаалт юм. Та массивыг хайрцагны эгнээ, холбосон жагсаалтыг эрдэнэсийн эрэл хайгуулд холбогдсон холбоосуудын гинж гэж ойлгож болно. Эдгээрийн аль аль нь тоглоом, ном, тэр байтугай таны дуртай зууш гэх мэт олон зүйлийг хянахад тусалдаг.
Массив гэж юу болох, холбосон жагсаалт гэж юу болох, тэдгээр нь хэрхэн ажилладаг, хэрхэн ялгаатай байдаг талаар ярилцах болно. Эдгээр санааг аль болох ойлгомжтой болгох бодит жишээг бид бас харах болно.
Массив бол зүгээр л нэг зүйлийн цуглуулга юм. Энэ нь хайрцаг бүрт нэг зүйлийг багтаасан эгнээний хайрцагтай адил юм. Жишээлбэл, таван хайрцгийг дараалан эгнүүлэн байрлуулна гэж төсөөлөөд үз дээ. Хайрцаг бүрийг дуртай тоглоом эсвэл зууш хадгалахад ашиглаж болно.
Массив дахь хайрцаг бүр индекс гэж нэрлэгддэг тоотой байдаг. Эхний хайрцгийг ихэвчлэн 0, дараагийнх нь 1, дараа нь 2 гэх мэтээр дугаарлана. Энэ дугаарлалт нь тодорхой зүйлийг хурдан олоход тусална. Жишээлбэл, хэрэв та гурав дахь хайрцагт байгаа зүйлийг авахыг хүсвэл 2 индекстэй хайрцгийг хараарай.
Массив дахь зүйлийг хэрхэн олохыг тайлбарлах энгийн томъёо энд байна. Хэрэв эхний хайрцаг нь эхлэх цэг дээр байгаа бол аливаа зүйлийн хаягийг дараах байдлаар бодож болно.
\( \textrm{Хаяг}(A(i)) = \textrm{Хаяг}(A(0)) + i \times \textrm{(нэг зүйлийн хэмжээ)} \)
Энэ нь эхний хайрцгаас хүссэн хайрцаг руу шилжихийн тулд тодорхой тооны зайг урагш тоолно гэдгийг хэлж байна.
Жижиг кино театрын суудал шиг массивыг төсөөлөөд үз дээ. Суудал бүр дугаартай бөгөөд дугаарыг нь мэдэж байвал та хурдан суудалдаа очиж болно.
Танай сургууль олон тооны шүүгээтэй бөгөөд тус бүр нь өвөрмөц дугаартай гэж төсөөлөөд үз дээ. Та цүнхээ шүүгээнд хийх гэж очихдоо шүүгээн дээрх тодорхой дугаарыг ашиглана. Массив дахь шүүгээ бүр нь хайрцаг шиг бөгөөд тоо нь таны цүнх буюу өгөгдөл хаана хадгалагдаж байгааг яг таг хэлж өгдөг.
Холбоостой жагсаалт нь зүйлсийг хадгалах өөр нэг арга юм. Энэ нь урт эгнээний тогтмол хайрцаг ашигладаггүй тул массиваас ялгаатай. Үүний оронд зангилаа гэж нэрлэгддэг тусгай хайрцагуудыг ашигладаг. Зангилаа бүр нэг зүйлийг агуулж байдаг ба дараагийн зангилаа хаана байгааг зааж өгөх заагчтай.
Та эрдэнэсийн эрэлд явж байна гэж төсөөлөөд үз дээ. Таны олсон сэжүүр бүр дараагийн сэжүүр хаана нуугдаж байгааг хэлж өгнө. Холбоотой жагсаалтад зангилаа бүр нь эдгээр сэжүүрүүдийн нэгтэй адил юм. Эхний сэжүүрээс эхлэхэд та хэрэгтэй зүйлээ олох хүртлээ заагчийг нэг зангилаанаас нөгөө рүү дагадаг.
Та зангилаа бүрийг жижиг дугтуй гэж бодож болно. Дугтуйнд карт (өгөгдөл) болон тэмдэглэл (заагч) байдаг. Энэ тэмдэглэл нь мөрөнд аль дугтуй ирэхийг хэлж өгнө.
Зангилаа гэж юу болохыг бичих энгийн аргыг харцгаая.
Зангилаа = {өгөгдөл, заагч)
Зангилаа дахь "өгөгдөл" нь хадгалагдсан мэдээлэл бөгөөд "заагч" нь таныг дараагийн зангилаа руу чиглүүлэх сумтай адил юм. Массиваас ялгаатай нь холбосон жагсаалт нь санах ойд бүх зангилаа бие биенийхээ хажууд байхыг шаарддаггүй; заагч тэдгээрийг холбосон л бол тэд хаана ч байж болно.
Холбогдсон жагсаалтын янз бүрийн загварууд байдаг. Энд гурван нийтлэг төрөл байна:
Та эрдэнэсийн газрын зургийг дагаж байна гэж төсөөлөөд үз дээ. Газрын зураг дээрх алхам бүр нь дараагийн алхам хаана байгааг хэлж өгдөг. Та нэмэлт сэжүүр нэмж эсвэл хассан ч карт бүр дээрх сэжүүрийг уншаад дагаж болно. Холбоостой жагсаалт ингэж ажилладаг. Зангилаа бүр (эсвэл сэжүүр) нь дараагийнхтай холбогдож, жагсаалтад нэг алхамаар шилжих боломжийг олгоно.
Массивууд болон холбосон жагсаалтууд нь бидэнд зүйлсийг хадгалахад тусалдаг ч үүнийг өөр өөр аргаар хийдэг. Энд зарим харьцуулалт байна:
Өгөгдлийн бүтэц бүр өөрийн гэсэн сайн талтай, бэрхшээлтэй байдаг. Эдгээрийг ойлгох нь танд хамгийн сайн ашиглахыг сонгоход тусална.
Массив:
Давуу тал:
Сул тал:
Холбоотой жагсаалтууд:
Давуу тал:
Сул тал:
Массивыг хэрхэн энгийн байдлаар ашиглахыг харцгаая. Та өөрийн дуртай таван өнгийг хадгалахыг хүсч байна гэж бодъё. Та таван хайрцаг бүхий массив үүсгэнэ. Дараа нь та өнгө бүрийг дарааллаар нь хайрцагт хийнэ. Жишээ нь:
Одоо, хэрэв та 2-р хайрцагт ямар өнгө байгааг мэдэхийг хүсвэл тэр хайрцгийг харахад л "Ногоон" гэсэн харагдана. Энэхүү хялбар хандалт нь массив ашиглах хамгийн сайн хэсгүүдийн нэг юм.
Одоо холбосон жагсаалтыг харцгаая. Үүнийг эрдэнэсийн эрэл хайгуул гэж бодоорой, та ямар нэгэн сэжүүрээр эхэлж, дараа нь дараагийнхыг олохын тулд зааврыг дагана уу. Холбоотой жагсаалтад бид зарим өгөгдлийг агуулсан зангилаанаас эхэлдэг. Энэ зангилаа нь дараа нь аль зангилаа болохыг харуулсан заагчтай.
Жишээлбэл, танд хөгжилтэй түүхийг өгүүлэх холбоотой жагсаалтад гурван зангилаа байна гэж төсөөлөөд үз дээ:
Та зангилаа 1-ээс эхэлж заагчийг (санамж) 2-р зангилаа руу, дараа нь 3-р цэг рүү дагана уу. Эдгээрийн аль нэгнийх нь хооронд шинэ сэжүүр нэмэхийг хүсвэл цөөн хэдэн заагчийг өөрчлөхөд л хангалттай. Энэ нь холбосон жагсаалтыг маш уян хатан болгодог.
Эдгээр өгөгдлийн бүтцийг оюун ухаандаа дүрслэх нь тустай. Массивыг тавиур дээрх тодорхой, шошготой хайрцгуудын урт эгнээ хэлбэрээр төсөөл. Хайрцаг бүр нь ямар нэгэн зүйл хадгалдаг бөгөөд тогтмол газартай байдаг. Одоо холбосон жагсаалтыг картуудын мөр болгон зур. Карт бүр дараагийн карт хаана нуугдаж байгааг харуулсан тэмдэглэлтэй. Массив дотор та дугаараар нь тодорхой хайрцаг руу шууд очиж болно. Холбоотой жагсаалтад та картуудыг дарааллаар нь дагах хэрэгтэй.
Массивыг өдөр тутмын олон зүйлд ашигладаг. Жишээлбэл, хуанли гэж төсөөлөөд үз дээ. Хуанли нь долоо хоног бүрийн тодорхой өдрийн тоотой бөгөөд эдгээр өдрүүдийг дараалан байрлуулсан байдаг. Хуанли харвал аль өдөр аль цэгт байгааг яг таг мэднэ.
Зүйлүүдийн тоо цаг хугацааны явцад өөрчлөгдөж болзошгүй үед холбосон жагсаалтыг ашигладаг. Зайрмагны машинд эгнэн зогссон хүмүүсийг төсөөлөөд үз дээ. Заримдаа шинэ хүмүүс эгнээнд нэгдэж, заримдаа хэн нэгэн гарч ирдэг. Шинэ тогтсон бүтцийг бий болгохгүйгээр шугам нь ургах эсвэл багасах боломжтой. Энэ нь бүх зүйл байнга өөрчлөгддөг хувилбаруудад холбосон жагсаалтыг маш их хэрэгтэй болгодог.
Массив болон холбосон жагсаалтуудын хооронд сонголт хийх нь таны өгөгдөлд юу хийх хэрэгтэй байгаагаас хамаарна. Хэрэв та долоо хоногийн өдрүүд гэх мэт тогтмол тооны зүйлтэй байх болно гэдгийг мэдэж байвал массив нь маш тохиромжтой. Гэсэн хэдий ч, хэрэв өгөгдлийн хэмжээ өөрчлөгдөж, танд амархан дасан зохицож чадах бүтэц хэрэгтэй бол холбосон жагсаалт нь илүү сайн сонголт байх болно.
Жишээлбэл, компьютерийн тоглоомд түвшний тоо тогтмол байдаг тул түвшин бүрийн оноог хадгалахад массив ашиглаж болно. Нөгөөтэйгүүр, холбосон жагсаалтыг тоглогчийн үйлдэл, нүүдлийн жагсаалтыг удирдахад ашиглаж болох бөгөөд энэ нь тоглоом үргэлжлэх тусам нэмэгдэх болно.
Байршлаар нь зүйлүүдэд хурдан хандах шаардлагатай үед массив нь хамгийн сайн сонголт юм. Учир нь та дугаарыг нь мэддэг бол ямар ч газар руу шууд үсрэх боломжтой. Гэсэн хэдий ч, та байнга зүйл нэмэх эсвэл хасах шаардлагатай үед холбосон жагсаалтууд нь олон зүйлийг зөөхгүйгээр жагсаалтыг өөрчлөх боломжийг олгодог тул илүү ашигтай байдаг.
Энэ талаар бодоод үз: хэрэв танд тогтоосон хуудас бүхий стикер цомог байгаа бол массив нь тэр цомогтой адил юм. Гэхдээ хэрэв танд зарлалын самбарт нэмдэг ил захидлын цуглуулга өсөн нэмэгдэж байгаа бол холбосон жагсаалт нь үүнтэй төстэй байх болно, учир нь та самбарыг бүхэлд нь цэгцлэхгүйгээр бусдын хооронд шинэ ил захидал нэмэх боломжтой.
Хичээлийнхээ гол санааг авч үзье.
Массив:
Холбоотой жагсаалтууд:
Ялгаа ба хэрэглээ:
Дүгнэж хэлэхэд массив болон холбогдсон жагсаалтууд нь өгөгдлийг зохион байгуулахад ашигладаг хоёр чухал өгөгдлийн бүтэц юм. Массивууд нь тогтмол, дугаарлагдсан хайрцгуудын эгнээ шиг ажилладаг бол холбосон жагсаалтууд нь алхам бүр нь дараагийн хаашаа явахыг зааж өгдөг эрдэнэсийн ангуу мэт ажилладаг. Энэ хоёр арга нь өөрийн гэсэн давуу талтай бөгөөд ажлын хэрэгцээ шаардлагад тулгуурлан өөр өөр нөхцөл байдалд ашиглагддаг.
Өгөгдөл хадгалах эдгээр хоёр аргыг ойлгох нь маш хэрэгтэй. Олон тооны компьютерийн программууд, тоглоомууд болон програмууд нь массив болон холбогдсон жагсаалтуудыг ардаа ашигладаг. Тэд хэрхэн ажилладаг талаар суралцсанаар та компьютерууд өгөгдлийг хэрхэн зохион байгуулж, удирдах талаар ойлголттой болно.
Санаж байна уу: массив нь бүтэц нь тогтсон үед энгийн бөгөөд хурдан байдаг бол холбоотой жагсаалт нь өгөгдөл өөрчлөгдөхөд уян хатан байдлыг санал болгодог. Та олон тооны шүүгээ эсвэл эрдэнэсийн мөрөөр төсөөлж байгаа эсэхээс үл хамааран эдгээр ойлголтууд нь мэдээллийг өдөр бүр хэрхэн хадгалж, ашигладаг болохыг ойлгоход тусалдаг.
Энэ хичээл нь массив болон холбогдсон жагсаалт гэж юу болох талаар тодорхой ойлголт өгсөн. Компьютерийн шинжлэх ухааныг үргэлжлүүлэн сурч, судлах тусам эдгээр үндсэн санаанууд нь илүү төвөгтэй сэдвүүдийг ойлгоход тань туслах болно. Эдгээр нь илүү дэвшилтэт өгөгдлийн бүтэц, алгоритмуудын барилгын материал юм.
Гол санаануудын хураангуй:
Массив болон холбосон жагсаалтын талаар энэ хичээлийг уншсанд баярлалаа. Мэдээллийг ойлгомжтой бөгөөд энгийн байдлаар хадгалах эдгээр аргуудын талаар суралцах нь танд таалагдсан гэдэгт найдаж байна. Та өсч томрох, илүү ихийг мэдэхийн хэрээр эдгээр үндсэн бүтэц, тэдгээр нь компьютерийг үр дүнтэй ажиллуулахад хэрхэн тусалдаг болохыг санаарай.