Стекове и опашки
Стек
Стекът е структура от данни "Последен влязъл, първи излязъл". Представете си огромна купчина тухли. Имате задачата да вземете тези тухли и да ги поставите в кутии за изпращане. И така, гледайки тази огромна купчина, започваме ли да дърпаме тухли от дъното на купчината или ги сваляме от върха? Здравият разум би ни диктувал да започнем от върха, а не да започнем игра на Jenga от 10 000 lb. Това е много подобно на начина, по който работят стековете тук. Последният елемент, поставен в структурата на данните LIFO, е първият елемент, от който се извлича.
Докато един стек може външно да прилича на масив, подреждането на елементите е в основата на функционалността. Следователно, когато създавате стек, е важно да ограничите начина на достъп до елементите в него.
var stack = Stack<String>() stack.push(element: "one") print(stack.count) // 1 stack.push(element: "two") print(stack.count) // 2 stack.push(element: "three") print(stack.count) // 3 stack.push(element: "four") print(stack.count) // 4 stack.isEmpty() // False print(stack.pop()) // Optional("four") print(stack.pop()) // Optional("three") print(stack.pop()) // Optional("two") print(stack.pop()) // Optional("one")
Опашка
Опашката е структура от данни от списък „Първи влезли, първи излезли“. Структурата на данните „Първо влязло, първо излязло“ означава, че елементите могат да бъдат вмъкнати само отзад и отстранени от опашката отпред. Опашката може най-добре да бъде представена в реалния свят чрез линия за закупуване на билети за кино. В опашката за билети първият човек, който се реди на опашката, може да купи своите билети първи и всички в опашката купуват своите билети в реда, в който са се присъединили към опашката. Подобно на Stacks, подреждането на премахване на данни от опашката е от решаващо значение за правилното й функциониране, така че гарантирането, че достъпът до данните на опашката се управлява по подходящ начин, е жизненоважно.
var queue = Queue<String>() queue.isEmpty // true queue.push(value: "one") print(queue.count) // 1 queue.push(value: "two") print(queue.count) // 2 queue.push(value: "three") print(queue.count) // 3 queue.push(value: "four") print(queue.count) // 4 queue.isEmpty // false print(queue.pop()) // one print(queue.pop()) // two print(queue.pop()) // three print(queue.pop()) // four
Практическа употреба за стекове и опашки
Стекове и опашки могат да се използват като временни структури от данни в ситуации, когато трябва да се запази редът на списъка или редът, в който елементите са добавени или премахнати, е важен.