Stackda saqlanadigan elementning ma’lumotlar turi



Download 19,52 Kb.
Sana15.12.2022
Hajmi19,52 Kb.
#886700
Bog'liq
4-topshiriq


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:



  1. Ma’lumotlar tuzilmalari –

Stacks va boshqa Stacks variantlari kabi ba’zi ma’lumotlar tuzilmalari ma’lumotlarni qayta ishlash uchun LIFO yondashuvidan foydalanadi.





  1. 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)
Download 19,52 Kb.

Do'stlaringiz bilan baham:




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish