Birləşdirilə bilən yığın necə yaradılır?

Çətinlik səviyyəsi Mühit
Tez-tez soruşulur Amazon Məlumat dəsti Fanatics
QalaqBaxılıb 83

Sistem dizaynı ilə bağlı müsahibə sualları o qədər açıq ola bilər ki, düzgün hazırlaşmağı bilmək çox çətindir. İndi satın aldıqdan sonra Amazon, Microsoft və Adobe-nin dizayn dövrlərini sındıra bilirəm Bu kitabı. Gündəlik bir yenidən nəzərdən keçirin dizayn sualı və söz verirəm ki, dizayn dövrünü sındıra bilərsiniz.

Bir dizayn etməli və yaratmalıyıq qalaq əməliyyatları daimi vaxtda həyata keçirir. Burada bir problemimiz var ki, birləşdirilə bilən yığını necə yaratmaq olar? Burada iki yığını birləşdirmək üçün aşağıdakı əməliyyatı həyata keçiririk.

  • push (element): Elemanı yığına daxil edin.
  • pop (): Yığındakı üst elementi çıxarın.
  • birləşmə (yığın 1, yığın 2): 2 yığını birləşdirin və ya birləşdirin.

Birləşdirilə bilən yığın necə yaradılır?Pin

misal

Birləşdirilə bilən yığın yaratmaq üçün bir neçə nümunə var, xahiş edirəm bir nəzər yetirin.

Input 

basmaq (1, s1);
basmaq (2, s1);
basmaq (3, s1);
basmaq (4, s2);
basmaq (5, s2);
basmaq (6, s2);
birləşmə (s1, s2);
ekran (s1);

Buraxılış 

Birləşdirilmiş Yığın: 3 2 1 6 5 4

Input 

basmaq (1, s1);
basmaq (5, s2);
basmaq (6, s2);
birləşmə (s1, s2);
ekran (s1);

Buraxılış 

Birləşdirilmiş Yığın: 1 6 5

Alqoritm

Burada əvvəlcə iki yığın yaradırıq və sonra birləşdirilə bilən yığın hazırlamağa çalışırıq.

  1. İki yığın s1 və s2 yaradın.
  2. Parametr olaraq tam dəyər və yığını qəbul edən bir funksiya itələməsi yaradın. İçindəki bir nodu başladın. verilmiş tam olaraq yeni qovşaqdakı məlumatları yeniləyin və yığının başına bağlayın.
  3. Yığın başı null yeniləyirsə, yığın quyruğu yeni bir düyündür. Başqa bir yığın başlığını yeni bir qovşaq kimi yeniləyin.
  4. Yığımı parametr olaraq qəbul edən bir funksiya popu yaradın. Yığın başının sıfır çaplı olub olmadığını yoxlayın “stack underflow”, başqa halda yığının başını yeni bir qovşaqda saxlayın, başı başın yanında yeniləyin. Yeni düyünün məlumatlarını qaytarın və düyünü silin.
  5. İki yığını parametr olaraq qəbul edən bir funksiya birləşməsi yaradın. Yığın 1-in başının sıfır yeniləmə olub olmadığını yoxlayın, yığın 2-nin başı, yığının 2-nin quyruğu kimi quyruq və qayıdır.
  6. Yığın 1 quyruğunun yanında yığın 2 başlığı və yığın quyruğu yığın 1 quyruğu kimi başqa bir yeniləmə.

Birləşdirilə bilən yığın yaratmaq üçün C ++ proqramı

#include <iostream> 
using namespace std; 
  
class node{ 
    public: 
        int data; 
        node* next; 
}; 
  
class newStack{ 
    public: 
        node* head; 
        node* tail; 
      
        newStack(){ 
            head = NULL; 
            tail = NULL; 
        } 
}; 
  
newStack* create(){ 
    newStack* ns = new newStack(); 
    return ns; 
} 
  
void push(int data, newStack* ns){ 
    node* temp = new node(); 
    temp->data = data; 
    temp->next = ns->head; 
  
    if(ns->head == NULL)   
        ns->tail = temp;  
      
    ns->head = temp; 
} 
  
int pop(newStack* ns){ 
    if (ns->head == NULL) { 
        cout << "stack underflow" << endl; 
        return 0; 
    } 
    else{ 
        node* temp = ns->head; 
        ns->head = ns->head->next; 
        int popped = temp->data; 
        delete temp; 
        return popped; 
    } 
} 
  
void merge(newStack* ns1, newStack* ns2){ 
   if (ns1->head == NULL){ 
       ns1->head = ns2->head; 
       ns1->tail = ns2->tail;  
       return; 
   } 
     
   ns1->tail->next = ns2->head; 
   ns1->tail = ns2->tail;  
} 
  
void display(newStack* ns){ 
    node* temp = ns->head; 
    cout<<"Merged Stack : ";
    while(temp != NULL) { 
        cout << temp->data << " "; 
        temp = temp->next; 
    }  
} 
  
int main(){ 
    newStack* s1 = create(); 
    newStack* s2 = create(); 
  
    push(1, s1); 
    push(2, s1); 
    push(3, s1); 
    
    push(4, s2); 
    push(5, s2); 
    push(6, s2); 
    
    merge(s1, s2); 
    display(s1); 
    
    return 0;
}
Merged Stack : 3 2 1 6 5 4

Birləşdirilə bilən yığın yaratmaq üçün Mürəkkəblik Analizi

Zamanın mürəkkəbliyi: O (1) bütün əməliyyatlar sabit vaxtdan istifadə olunduğu üçün, yəni O (1).

Köməkçi məkan: O (1), çünki əlavə yer istifadə etmirik.

References

Crack Sistemi Dizayn Müsahibələri
Translate »