Rumah > pembangunan bahagian belakang > C++ > Menggunakan baris gilir untuk membalikkan timbunan

Menggunakan baris gilir untuk membalikkan timbunan

WBOY
Lepaskan: 2023-08-26 17:01:06
ke hadapan
875 orang telah melayarinya

Pengenalan

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.

Apakah tindanan?

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.

Fungsi asas timbunan

  • 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()

Menggunakan baris gilir untuk membalikkan timbunan

Apakah itu giliran?

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.

Fungsi asas baris gilir

  • 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()

Timbunan terbalik menggunakan baris gilir

Pertama, mari kita fahami apakah penyongsangan tindanan melalui contoh.

Stack before reversing: [2,5,6,7]
Stack Reversed: [7,6,5,2]
Salin selepas log masuk

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.

Algoritma

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

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);
}
Salin selepas log masuk

Output

Initial Queue is: 1 2 3 4 5 
Reversed Queue is: 5 4 3 2 1 
Salin selepas log masuk

Kesimpulan

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!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan