Պահունակը ալգորիթմներում ամենատարածված տվյալային կառուցվածքներից մեկն է։ Այն գործում է «վերջինը մտավ, առաջինը դուրս եկավ» սկզբունքով. վերջին ավելացված տարրը նախնահերթությամբ է հեռացվում։ Սա կարելի է համեմատել ափսեների դեզի հետ, որտեղ միայն վերևի ափսեն է հասանելի հեռացման համար, մինչև որ դրա վրայի բոլոր մյուս ափսեները հեռացվեն։
Պահունակները կարող են օգտագործվել իրական կյանքի բազմաթիվ իրավիճակներում։ Երբ դիտում եք կայքեր վեբ զննարկչում, «հետ» (back) կոճակը սեղմելով, դուք վերադառնում եք նախորդ էջ։ Էջերի պատմությունը կարելի է պահպանել պահունակում, և «հետ» կոճակը սեղմելու պահին վերադառնում եք դեզի վերևի էջին։ Եթե էլի եք սեղմում «հետ» կոճակը, ապա պահունակի վերևից այդ էջը հեռացվում է, և դուք տեսնում եք նախորդը։
Պահունակի իրականացման մի քանի տարբերակներ υπάρχουν Python-ում։
Օգտագործելով list – պահունակի վերևը կլինի list-ի վերջին տարրը։ Կարող ենք ավելացնել append-ով, հեռացնել pop-ով և ստանալ վերևի տարրը [-1]-ով։
Օգտագործելով deque գրադարանային collections-ից – հնարավորություն է տալիս ավելացնել և հեռացնել տարրեր ինչպես սկզբից, այնպես էլ վերջից։
LifoQueuequeue գրադարանից – սա էլ հենց վերջինը մտավ (first-in), առաջինը դուրս եկավ (last-out) հերթի տարբերակն է, ինչը համապատասխանում է պահունակի աշխատանքին։
from queue import LifoQueue
stack = LifoQueue()
# push (ավելացում)
stack.put(1)
stack.put(2)
stack.put(3)
# pop (հեռացում)
print(stack.get()) # տպում է 3
print(stack.get()) # տպում է 2
# peek (դիտել վերևի տարրը)
print(stack.queue[-1]) # տպում է 1
print(stack.empty()) # ստուգել, արդյոք դատարկ է -> տպում է False
# Using a simple list
stack = []
# push (ավելացում)
stack.append(1)
stack.append(2)
stack.append(3)
# pop (հեռացում)
print(stack.pop()) # տպում է 3
print(stack.pop()) # տպում է 2
# peek (դիտել վերևի տարրը)
print(stack[-1]) # տպում է 1
print(len(stack) == 0) # ստուգել, արդյոք դատարկ է -> տպում է False
Տրված է մաթեմատիկական արտահայտության փակագծերի հաջորդականություն (օրինակ (()())), որի վավեր լինելը պետք է ստուգել։ Փակագծերի հաջորդականությունը վավեր է, եթե յուրաքանչյուր բացվող փակագիծ ունի համապատասխան փակող փակագիծ, և չկան ավելորդ փակագծեր (բացվող կամ փակվող)։
Մուտք
Մուտքի միակ տողը պարունակում է մեկ տող b (1 ≤ |b| ≤ ), որը ներկայացնում է փակագծերի հաջորդականությունը։
Ելք
Ծրագիրը պետք է տպի Yes, եթե փակագծերի հաջորդականությունը վավեր է, հակառակ դեպքում՝ No: