Стек ба дараалал
Стек нь жагсаалтын зүйлүүдийг оруулах, устгахыг зөвхөн дээд талын нэг төгсгөлд хийх боломжтой эрэмбэлэгдсэн жагсаалт юм. Энэ шалтгааны улмаас стекийг хамгийн сүүлд гарсан (LIFO) өгөгдлийн бүтэц гэж үздэг. Дараалал нь жагсаалтын зүйлүүдийг нэг төгсгөлд нь арын хэсэг, нөгөө талд нь урд талд нь устгадаг дараалсан жагсаалт юм. Энэхүү оруулах, устгах механизм нь дарааллыг "Эхлээд гарсан" (FIFO) өгөгдлийн бүтэц болгодог.
Стек гэж юу вэ?
Өмнө дурьдсанчлан стек гэдэг нь дээд хэсэг гэж нэрлэгддэг зөвхөн нэг төгсгөлөөс элементүүдийг нэмж хасдаг өгөгдлийн бүтэц юм. Стекүүд нь түлхэх, поп гэсэн хоёр үндсэн үйлдлийг зөвшөөрдөг. Түлхэх үйлдэл нь стекийн дээд хэсэгт шинэ элемент нэмнэ. Поп үйлдэл нь стекийн дээд хэсгээс элементийг устгадаг. Хэрэв стек аль хэдийн дүүрсэн бол түлхэх үйлдлийг гүйцэтгэх үед үүнийг стек халилт гэж үзнэ. Хэрэв поп үйлдлийг аль хэдийн хоосон стек дээр гүйцэтгэсэн бол стекийн дутуу урсгал гэж үзнэ. Стек дээр хийж болох үйлдлүүдийн тоо цөөн байдаг тул үүнийг хязгаарлагдмал өгөгдлийн бүтэц гэж үздэг. Нэмж хэлэхэд, түлхэх болон поп үйлдлүүдийг тодорхойлсон арга барилын дагуу стект хамгийн сүүлд нэмэгдсэн элементүүд стекээс эхлээд гарах нь тодорхой байна. Тиймээс стекийг LIFO өгөгдлийн бүтэц гэж үздэг.
Дараалал гэж юу вэ?
Дараалалд элементүүдийг дарааллын арын хэсгээс нэмж дарааллын урдаас хасдаг. Эхлээд нэмсэн элементүүд дарааллаас эхлээд хасагдах тул FIFO дарааллыг хадгална. Элемент нэмэх, хасах ийм дарааллаас шалтгаалан дараалал нь төлбөрийн шугамын санааг илэрхийлдэг. Дараалалаар дэмжигдсэн ерөнхий үйлдлүүд нь дараалалд оруулах, дараалал арилгах үйлдлүүд юм. Дараалалд оруулах үйлдэл нь дарааллын арын хэсэгт элемент нэмэх бол дараалал арилгах үйлдэл нь дарааллын урд талын элементийг устгадаг. Ерөнхийдөө дараалалд санах ойн хязгаарлалтаас гадна дараалалд нэмж болох элементүүдийн тоонд хязгаарлалт байдаггүй.
Стек болон дараалал хоёрын ялгаа юу вэ?
Хэдийгээр стек болон дараалал хоёулаа эрэмбэлэгдсэн жагсаалтууд боловч зарим нэг чухал ялгаа байдаг. Стект зүйл нэмэх, устгахыг зөвхөн дээд тал гэж нэрлэдэг нэг төгсгөлөөс хийж болох бол дараалалд зүйл нэмэхийг ар тал гэж нэрлэдэг нэг төгсгөлөөс, зүйлсийг устгахыг урд гэж нэрлэдэг нөгөө үзүүрээс хийж болно. Стект стек дээр хамгийн сүүлд нэмэгдсэн зүйлсийг стекээс эхлээд устгах болно. Тиймээс стекийг LIFO өгөгдлийн бүтэц гэж үздэг. Дараалалд хамгийн түрүүнд нэмсэн зүйлсийг дарааллаас эхлээд хасна. Тиймээс дарааллыг FIFO өгөгдлийн бүтэц гэж үздэг.
Холбогдох холбоос:
Стек ба овоо хоёрын ялгаа