Baris gilir dan tindanan ialah kedua-dua struktur data linear yang digunakan untuk menyimpan data. Tindanan menggunakan prinsip LIFO untuk memasukkan dan memadam elemen. Barisan beratur menggunakan prinsip FIFO. Dalam tutorial ini, kita akan belajar cara menggunakan baris gilir untuk membalikkan tindanan. Membalikkan bermakna elemen terakhir timbunan menjadi yang pertama, dan seterusnya.
Timbunan dalam struktur data diilhamkan oleh timbunan kehidupan sebenar. Ia menggunakan logik keluar-masuk-dahulu (LIFO), yang bermaksud bahawa elemen terakhir yang masuk ke dalam tindanan akan dialih keluar dahulu. Dalam timbunan, elemen dimasukkan dari atas dan hanya boleh dialih keluar dari atas. Tindanan hanya mempunyai satu titik akhir.
Dalam kehidupan sebenar, menyusun surat khabar adalah contoh timbunan. Akhbar yang diambil dari longgokan adalah yang terakhir dimasukkan.
push() − Ia akan memasukkan elemen tindanan dari atas.
Sintaks − stack_name.push(jenis elemen)
pop() − Ia akan mengeluarkan elemen dari bahagian atas timbunan.
Sintaks − stack_name.pop()
size() − Ia akan mengembalikan saiz tindanan.
Syntax − stack_name.size()
top() − Ia mengembalikan rujukan kepada elemen atas tindanan.
Syntax − stack_name.top()
Konsep baris gilir dalam struktur data berasal daripada baris gilir dalam kehidupan sebenar. Dalam baris gilir, elemen dimasukkan dari hujung belakang dan dialih keluar dari hujung hadapan. Kedua-dua hujung baris gilir terbuka dan beroperasi pada prinsip masuk dahulu keluar (FIFO). Prinsip ini bermakna elemen yang dimasukkan dahulu akan dikeluarkan daripada baris gilir terlebih dahulu.
push() − Memasukkan elemen ke bahagian belakang baris gilir.
Sintaks − queue_name.push(jenis data)
pop() − Mengalih keluar elemen dari hadapan baris gilir.
Sintaks − queue_name.pop()
depan() − Dapatkan rujukan kepada elemen pertama dalam baris gilir.
Sintaks − queue_name.front()
size() − Mengembalikan saiz baris gilir.
Sintaks − queue_name.size()
Pertama, mari kita fahami apakah penyongsangan tindanan melalui contoh.
Stack before reversing: [2,5,6,7] Stack Reversed: [7,6,5,2]
Logik - Kami menggunakan timbunan dengan elemen dan baris gilir kosong. Pop elemen daripada timbunan satu demi satu dan masukkannya ke dalam baris gilir sehingga semua elemen telah dimasukkan. Kini, elemen baris gilir dialih keluar dan dimasukkan ke dalam timbunan kosong sekali lagi. Selesai.
Langkah 1: Masukkan elemen ke dalam Tindanan.
Langkah 2: Dapatkan baris gilir kosong.
Langkah 3: Tolak elemen tindanan ke dalam baris gilir kosong satu demi satu.
Langkah 4: Sekarang tindanan kosong.
Langkah 5: Pop elemen dari baris gilir satu demi satu dan tolaknya ke atas timbunan.
Langkah 6: Timbunan diterbalikkan.
Contoh ditunjukkan di bawah.
#include<iostream> #include<stack> #include<queue> using namespace std; //function to reverse a queue void reverse(queue<int> &q) { //Declaring a stack s stack<int> s; //inserting Queue elements into stack while (!q.empty()) { s.push(q.front()); q.pop(); } //Again pushing the elements into queue from back while (!s.empty()) { q.push(s.top()); s.pop(); } } void printQueue(queue<int> q) { while(!q.empty()) { cout<<q.front()<<" "; q.pop(); } cout<<endl; } int main() { queue<int> q; //pushing elements into the Queue for(int i=1;i<=5;i++) { q.push(i); } cout<<"Initial Queue is: "; printQueue(q); reverse(q); cout<<"Reversed Queue is: "; printQueue(q); }
Initial Queue is: 1 2 3 4 5 Reversed Queue is: 5 4 3 2 1
Kita boleh membalikkan tindanan dengan mudah dengan menggunakan baris gilir. Kami memasukkan elemen tindanan ke dalam baris gilir, dan kemudian masukkan elemen baris gilir ke dalam tindanan semula. Saya harap anda dapat memahami dan melaksanakan pendekatan ini dengan mudah.
Atas ialah kandungan terperinci Menggunakan baris gilir untuk membalikkan timbunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!