14.N o’lchamli sonli qiymatdagi to’plam berilgan. Dinamik massiv ko’rinishida stek yaratilsin va to’plam elementlari stekga qo’shilsin. Stek cho’qqisidan ketma-ket 2 ta element olinsin. Stek barcha elementlari ekranga chiqarilsin?
#include
using namespace std;
class twoStacks {
int* arr;
int size;
int top1, top2;
public:
// Constructor
twoStacks(int n)
{
size = n;
arr = new int[n];
top1 = n / 2 + 1;
top2 = n / 2;
}
void push1(int x)
{
// Kamida bitta bo'sh
// yangi element uchun bo'sh joy
if (top1 > 0) {
top1--;
arr[top1] = x;
}
else {
cout << "Stack Overflow"
<< " By element : " << x << endl;
return;
}
}
// Elementni surish usuli
// x dan stek2ga
void push2(int x)
{
// Kamida bitta bo'sh
// yangi element uchun bo'sh joy
if (top2 < size - 1) {
top2++;
arr[top2] = x;
}
else {
cout << "Stack Overflow"
<< " By element : " << x << endl;
return;
}
}
// Birinchi stekdan elementni chiqarish usuli
int pop1()
{
if (top1 <= size / 2) {
int x = arr[top1];
top1++;
return x;
}
else {
cout << "Stack UnderFlow";
exit(1);
}
}
// Elementni ochish usuli
// ikkinchi stekdan
int pop2()
{
if (top2 >= size / 2 + 1) {
int x = arr[top2];
top2--;
return x;
}
else {
cout << "Stack UnderFlow" << endl;
exit(1);
}
}
};
/* PROGRAMMADA 2TA STEK ELEMENTLARI ISHLATILADI*/
int main()
{
twoStacks ts(5);
ts.push1(5);
ts.push2(10);
ts.push2(15);
ts.push1(11);
ts.push2(7);
cout << "Popped element from stack1 is "
<< ": " << ts.pop1() << endl;
ts.push2(40);
cout << "Popped element from stack2 is "
<< ": " << ts.pop2() << endl;
return 0;
}
2-vazifa: 14.N o’lchamli sonli qiymatdagi to’plam berilgan. Bir bog’lamli ro’yhat ko’rinishida stek yaratilsin va to’plam elementlari stekga qo’shilsin. Stek cho’qqisidan ketma-ket 2 ta element olinsin. Stek barcha elementlari ekranga chiqarilsin
#include
using namespace std;
// listning ruyxati yaratiladi;
class Node {
public:
int data;
Node* link;
// konstructor
Node(int n)
{
this->data = n;
this->link = NULL;
}
};
class Stack {
Node* top;
public:
Stack() { top = NULL; }
void push(int data)
{
//Yangi tugun tempini yarating va xotirani yig'indiga ajrating
Node* temp = new Node(data);
// Stack (uyma) to'lganligini tekshiring.
// Keyin elementni kiritish kerak
// stekning to'lib ketishiga olib keladi
if (!temp) {
cout << "\nStack Overflow";
exit(1);
}
// vaqtinchalik fayl ishda tushiriladi
temp->data = data;
// Yuqori ko'rsatkich mos yozuvini vaqtinchalik havolaga qo'ying temp->link = top;
// stackning vaqtinchalik temp tayyorlanadi
top = temp;
}
// Yo'qligini tekshirish uchun yordamchi dastur
// stek bo'sh yoki yo'q
bool isEmpty()
{
// Agar top NULL bo'lsa, bu shuni anglatadi
// stekda hech qanday element yo'q
return top == NULL;
}
// stekdagi yuqori elementni qaytarish uchun yordamchi dastur
int peek()
{
// Agar stek bo'sh bo'lmasa, yuqori elementni qaytaring
if (!isEmpty())
return top->data;
else exit(1);
}
// O'chirish funktsiyasi
// berilgan navbatdagi kalit q
void pop()
{
Node* temp;
// stack sinab kuriladi
if (top == NULL) {
cout << "\nStack Underflow" << endl;
exit(1);
}
else {
// Yuqorini tempga belgilang
temp = top;
//ikkinchi ruyxat belgilanadi
top = top->link;
// Bu avtomatik ravishda yo'q qilinadi
// birinchi tugun va ikkinchi tugun o'rtasidagi bog'lanish
// Yuqori tugun xotirasini bo'shatish
// ya'ni tugunni o'chirish
free(temp);
}
}
// funksiyani barchasini chop etadi
// stekdagi elementlarni
void display()
{
Node* temp;
// Stack to'kilmasligini tekshiring
if (top == NULL) {
cout << "\nStack Underflow";
exit(1);
}
else {
temp = top;
while (temp != NULL) {
//tugundagi malumotlarni chop etish
cout << temp->data;
// Temp havolasini temp qiling
temp = temp->link;
if (temp != NULL)
cout << " -> ";
}
}
}
};
// programma ishlayabdi
int main()
{
// stek yaratilyabdi
Stack s;
// Push the elements of stack
s.push(11);
s.push(22);
s.push(33);
s.push(44);
// Display stack elements
s.display();
// stekdagi elementlarni chop etadi
cout << "\nTop element is " << s.peek() << endl;
// stekdagi elementlarni uchirish
s.pop();
s.pop();
// Stack elementlarini ko'rsatish
s.display();
// stekdaqi qidirilayotgan element topiladi
cout << "\nTop element is " << s.peek() << endl;
return 0;
}
Cod natijasi