Junior — Middle
Ҳамоҳангии маълумотҳои Stack-ро чӣ гуна ба назар мерасонад?
sobes.tech AI
Ҷавоб аз AI
Тугма (Stack) — бу маълумотлар тузилмаси бўлиб, у LIFO (Last In, First Out) принципига асосланган, яъни сўнгги қўшилган элемент биринчи чиқади.
Фойдалари:
- Ижро этиш ва фойдаланиш осон.
- Юқори қавсдаги элементга тез кириш (push, pop, peek операциялари O(1) вақтда бажарилади).
- Дарахтни ўтказиш, амалларни бекор қилиш, парсинг каби вазифалар учун жуда мос.
Камчиликлари:
- Чегараланган кириш: фақат юқори қавсдаги элемент билан ишлаш мумкин, тасодифий кириш йўқ.
- Тугма ҳажми чегараланган бўлиши мумкин (масалан, дастурда чақирувлар тугмаси), бу тўлдиришга олиб келиши мумкин.
Go тилида мисол:
package main
import "fmt"
type Stack []int
func (s *Stack) Push(v int) {
*s = append(*s, v)
}
func (s *Stack) Pop() (int, bool) {
if len(*s) == 0 {
return 0, false
}
index := len(*s) - 1
elem := (*s)[index]
*s = (*s)[:index]
return elem, true
}
func main() {
var s Stack
s.Push(10)
s.Push(20)
fmt.Println(s.Pop()) // 20, true
fmt.Println(s.Pop()) // 10, true
}