O'rta element ustida operatsiyalar bilan stekni loyihalash o (1) vaqt murakkabligida


Chiqish Ochildi: 99 Olingan: 88 O'rta element: 44 Yangi o'rta element: 55 2-usul


Download 28.17 Kb.
bet2/2
Sana15.06.2023
Hajmi28.17 Kb.
#1488150
1   2
Bog'liq
stek o\'rtasiga belgi joylashtirish

Chiqish
Ochildi: 99
Olingan: 88
O'rta element: 44
Yangi o'rta element: 55
2-usul: Standart stack va dequedan foydalanish 
Biz elementlarning yarmini saqlash uchun standart stekdan foydalanamiz va yaqinda qo'shilgan elementlarning qolgan yarmi dequeda mavjud bo'ladi. MyStack-ga qo'shish operatsiyasi deque orqasiga element qo'shadi. Dekdagi elementlar soni stekdagidan 1 ga ko'p yoki teng bo'lib qoladi, biroq, agar dekvedagi elementlar soni stekdagi elementlar sonidan 1 dan ortiq bo'lsa, biz old tomondan elementni olib tashlaymiz. deque va stack ichiga suring. MyStack-dagi pop operatsiyasi dequening orqa qismidagi elementni olib tashlaydi. Agar pop-operatsiyadan so'ng, dekvening o'lchami stekning o'lchamidan kichik bo'lsa, biz stekning yuqori qismidan elementni chiqarib, uni dekvening o'lchamidan kam bo'lmasligi uchun uni yana old tomoniga joylashtiramiz. to'plam. O'rta element har doim dequening oldingi elementi ekanligini ko'ramiz. Shunday qilib, o'rta elementni o'chirish O (1) da amalga oshirilishi mumkin, agar biz elementni deque old qismidan olib tashlasak. 
My_stack-dagi operatsiyalarni ko'rib chiqing:
Operatsion stack deque
qo‘shish(2) {} {2}
qo'shish(5) {2} {5}
qo'shish(3) {2} {5,3}
qo'shish(7) {2,5} {3,7}
qo'shish(4) {2,5} {3,7,4}
deleteMiddle() {2,5} {7,4}

#include
using namespace std;
class myStack {
stack st;
deque dq;
public:
void add(int data)
{
dq.push_back(data);
if (dq.size() > st.size() + 1) {
int temp = dq.front();
dq.pop_front();
st.push(temp);
}
}
void pop()
{
int data = dq.back();
dq.pop_back();
if (st.size() > dq.size()) {
int temp = st.top();
st.pop();
dq.push_front(temp);
}
}
int getMiddleElement() {
return dq.front();
}
void deleteMiddleElement()
{
dq.pop_front();
if (st.size() > dq.size()) { // new middle element
int temp = st.top(); // should come at front of deque
st.pop();
dq.push_front(temp);
}
}
};
int main()
{
myStack st;
st.add(2);
st.add(5);
cout << "Middle Element: " << st.getMiddleElement() << endl;
st.add(3);
st.add(7);
st.add(4);
cout << "Middle Element: " << st.getMiddleElement() << endl;
st.deleteMiddleElement();
cout << "Middle Element: " << st.getMiddleElement() << endl;
st.deleteMiddleElement();
cout << "Middle Element: " << st.getMiddleElement() << endl;
st.pop();
st.pop();
st.deleteMiddleElement();
}
//By- Vijay Chadokar

Chiqish
O'rta element: 5
O'rta element: 3
O'rta element: 7
O'rta element: 5
Ushbu maqola Keyut tomonidan taqdim etilgan . Agar biror narsa noto'g'ri bo'lsa yoki yuqorida muhokama qilingan mavzu haqida ko'proq ma'lumot almashishni istasangiz, sharhlaringizni yozing

Download 28.17 Kb.

Do'stlaringiz bilan baham:
1   2




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