Nazariy qism
Ba’zi turdagi asosiy konteynerga oxirgi marta qo’shilgan elementga kirishni cheklash orqali cheklash funksiyasini ta’minlovchi shablon konteyner adapter klassi. Sinf konteynerda faqat operatsiyalar bajarilishini stackaniq belgilash muhim bo’lganda ishlatiladi .stack
Template >
Class stack
Type
Stackda saqlanadigan elementning ma’lumotlar turi.
Container
Stackni amalga oshirish uchun ishlatiladigan asosiy konteyner turi. Standart qiymat sinf hisoblanadi deque.
Izohlar
TypeStack obyekti shablonining birinchi parametrida ko’rsatilgan sinf elementlari sinonimdir va ikkinchi shablon parametrida ko’rsatilgan value_typeasosiy konteyner sinfidagi element turiga mos kelishi kerak . ContainerU Typeshunday tayinlangan bo’lishi kerakki, siz ushbu turdagi ob’ektlarni nusxalashingiz va ushbu turdagi o’zgaruvchilarga qiymatlarni belgilashingiz mumkin.
Stack konteynerlar uchun mos asosiy sinflar o’z ichiga oladi deque, listsinf va vectorsinf , yoki qo’llab-quvvatlaydi har qanday boshqa ketma-ketlik konteyner backpush_back, va pop_back. Asosiy konteyner klassi konteyner adapteriga o’ralgan bo’lib, u faqat cheklangan ketma-ketlik konteyner a’zosi funktsiyalarini umumiy interfeys sifatida ochib beradi.
Ob’ektlar stackteng bo’ladi, agar sinf elementlari teng Typebo’lsa va kamroq taqqoslansa, agar sinf elementlari Typekamroq taqqoslansa.
Sinf stackoxirgi kirish (LIFO) ma’lumotlar tuzilmasini saqlaydi. Ushbu yondashuvning yaxshi analogi plitalar to’plamidir. Elementlar (plitalar) faqat taglik idishining oxiridagi oxirgi element bo’lgan stackning yuqori qismidan kiritilishi, tekshirilishi yoki olib tashlanishi mumkin. Faqat yuqori elementga kirishni cheklash stacksinfdan foydalanishning sababidir.
Sinfqueue birinchi kirish (FIFO) ma’lumotlar strukturasini qo’llab-quvvatlaydi. Ushbu yondashuvning yaxshi analogi – bu bank xodimiga odamlarning navbati. Elementlar (odamlar) navbatning oxiriga qo’shilishi va navbatning old qismidan olib tashlanishi mumkin. Navbatning boshini ham, oxirini ham
Tekshirishingiz mumkin. Shu tarzda faqat old va orqa elementlarga kirishni cheklash queuesinf mo’ynasidan foydalanishning sababidir.
Sinfpriority_queue o’z elementlarini shunday joylashtiradiki, eng katta element har doim yuqori holatda bo’ladi. U elementni kiritishni, shuningdek, yuqori elementni tekshirish va olib tashlashni qo’llab-quvvatlaydi. Ushbu yondashuvning yaxshi analogi yoshi, bo’yi yoki boshqa har qanday mezon bo’yicha buyurtma qilingan odamlarning navbatidir.
Buni qanday qilib LIFO-> birinchi navbatda oxirgi o’ringa qo’yishim mumkin? Buni qilishning oson yo’li bormi? Bu birinchi chiqadigan navbatdagi FIFO-> fifo.
Using namespace std;
Int main(){
Queue q;
Cout << “Pushing one two three four\n”;
q.push(“one”);
q.push(“two”);
q.push(“three”);
q.push(“four”);
cout << “Now, retrieve those values in FIFO order.\n”;
while(!q.empty()) {
cout << “Popping “;
cout << q.front() << “\n”;
q.pop();
}
Cout << endl;
Return 0;
}
Old shartlar – Dasturlashda FIFO (First-In-First-Out) yondashuvi, dasturlashda FIFO va LIFO yondashuvi
LIFO oxirgi kiruvchi, birinchi chiqadi degan qisqartma hisoblanadi . Bu birinchi element oxirgi marta qayta ishlanadigan va oxirgi element birinchi bo’lib qayta ishlanadigan ma’lumotlar tuzilmalari bilan ishlash usuli .
Haqiqiy hayotdan misol:
Ushbu misolda quyidagi narsalarni hisobga olish kerak:
To’plarni ushlab turadigan chelak bor.
Paqirga har xil turdagi to’plar kiritiladi.
Paqirga oxirgi kirgan to’p birinchi bo’lib chiqariladi.
Paqirga oxirgi navbatda kirgan to’p uning ustidagi to’pdan keyin (yangisi) chiqariladi.
Shunday qilib, chelakka birinchi bo’lib kirgan to’p chelakni oxirgi tark etadi.
Shunday qilib, chelakka kirgan oxirgi to’p (Ko’k) birinchi bo’lib chelakka kirgan birinchi to’p (Qizil) oxirgi bo’lib chiqariladi.
Bu oxirgi kiruvchi birinchi chiqish yondashuvi yoki LIFO sifatida tanilgan.
LIFO qayerda ishlatiladi:
Ma’lumotlar tuzilmalari –
Stacks va boshqa Stacks variantlari kabi ba’zi ma’lumotlar tuzilmalari ma’lumotlarni qayta ishlash uchun LIFO yondashuvidan foydalanadi.
Eng so’nggi ma’lumotlarni olish –
Ba’zida kompyuterlar massivdan yoki ma’lumotlar buferidan ma’lumotlar chiqarilganda LIFO-dan foydalanadilar. Eng so’nggi ma’lumotlarni olish kerak bo’lganda, LIFO usuli qo’llaniladi.
LIFO uchun dastur misollari –
Stack ma’lumotlar strukturasidan foydalanish:
C++
// C++ program to demonstrate
// working of LIFO
// using stack in C++
#include
Using namespace std;
// Pushing element on the top of the stack
Stack stack_push(stack stack)
{
For (int i = 0; i < 5; i++)
{
Stack.push(i);
}
Return stack;
}
// Popping element from the top of the stack
Stack stack_pop(stack stack)
{
Cout << “Pop :”;
For (int i = 0; i < 5; i++)
{
Int y = (int)stack.top();
Stack.pop();
Cout << (y) << endl;
}
Return stack;
}
// Displaying element on the top of the stack
Void stack_peek(stack stack)
{
Int element = (int)stack.top();
Cout << “Element on stack top : “ << element << endl;
}
// Searching element in the stack
Void stack_search(stack stack, int element)
{
Int pos = -1,co = 0;
While(stack.size() > 0)
{
Co++;
If(stack.top() == element)
{
Pos = co;
Break;
}
Stack.pop();
}
If (pos == -1)
Cout << “Element not found” << endl;
Else
Cout << “Element is found at position “ << pos << endl;
}
// Driver code
Int main()
{
Stack stack ;
Stack = stack_push(stack);
Stack = stack_pop(stack);
Stack = stack_push(stack);
Stack_peek(stack);
Stack_search(stack, 2);
Stack_search(stack, 6);
Return 0;
}
# Python3 program to demonstrate working of LIFO
# Pushing element on the top of the stack
Def stack_push(stack):
For i in range(5):
Stack.append(i)
Return stack
# Popping element from the top of the stack
Def stack_pop(stack):
Print(“Pop :”)
For i in range(5):
Y = stack[-1]
Stack.pop()
Print(y)
Return stack
# Displaying element on the top of the stack
Def stack_peek(stack):
Element = stack[-1]
Print(“Element on stack top :”, element)
# Searching element in the stack
Def stack_search(stack, element):
Pos = -1
Co = 0
While(len(stack) > 0):
Co+=1
If(stack[-1] == element):
Pos = co
Break
Stack.pop()
If (pos == -1):
Print( “Element not found”)
Else:
Print(“Element is found at position”, pos)
Stack = []
Stack_push(stack)
Stack_pop(stack)
Stack_push(stack)
Stack_peek(stack)
Stack_search(stack, 2)
Stack_search(stack, 6)
Do'stlaringiz bilan baham: |