Contoh Penampan Pekeliling dalam C++

Contoh Penampan Pekeliling Dalam C



Penampan bulat atau gilir Pekeliling ialah versi lanjutan baris gilir biasa di mana indeks terakhir dan indeks ekor disambungkan dalam struktur bulat. Penampan bulat dalam C++ mengikut dua kaedah: enqueue() dan dequeue(). Kami melaksanakan penampan bulat atau operasi baris gilir bulat berdasarkan kaedah ini.

  • Kaedah enqueue() menyemak untuk melihat sama ada penimbal telah diisi. Jika tidak, sahkan bahawa indeks akhir adalah yang terakhir. Jika ya, tetapkan nilai ekor kepada 0. Jika tidak, tingkatkan nilai ekor dengan nilai pada indeks tersebut.
  • Fungsi dequeue() mengambil nilai daripada indeks hadapan dalam baris gilir bulat. Jika baris gilir kosong, mesej akan memaparkan baris gilir kosong itu. Jika tidak, ia mendapat nilai terakhir dan memadamkannya daripada baris gilir.

Program untuk Melaksanakan Penampan Pekeliling dalam C++

Mengikuti dua kaedah yang disebutkan, kami melaksanakan penimbal bulat dalam C++. Mari kita pertimbangkan semua langkah untuk pelaksanaan baris gilir bulat dalam C++.







#include

menggunakan ruang nama std;

struct MyQueue

{

int kepala , ekor ;

int Qsize;



int * NewArr;



MyQueue ( int no ) {



kepala = ekor = -1 ;

Qsize = saiz;

NewArr = int baharu [ s ] ;

}



batal enQueue ( int val ) ;



int deQueue ( ) ;



void showQueue ( ) ;



} ;



Bermula dengan kod, kami mula-mula mencipta struct 'MyQueue' untuk memulakan pembolehubah kepala dan ekor. Pembolehubah kepala mewakili indeks hadapan dan ekor mewakili indeks belakang belakang tatasusunan. Selepas itu, saiz baris gilir bulat, yang dilambangkan dengan pembolehubah 'Qsize', ditakrifkan.



Kemudian, kami mentakrifkan tatasusunan 'NewArr' yang diperuntukkan secara dinamik yang menyimpan nilai baris gilir bulat. Seterusnya, kami memanggil MyQueue() yang merupakan pembina dan lulus parameter 'sz' untuk saiz baris gilir bulat. Di dalam pembina MyQueue(), kami memberikan nilai '-1' kepada penunjuk kepala dan ekor. Nilai negatif ini menunjukkan bahawa baris gilir kosong sekarang. Melangkah ke hadapan, kami menetapkan nilai 'sz' yang mewakili saiz baris gilir bulat. Barisan gilir pekeliling 'NewArr' ditetapkan dengan kata kunci baharu untuk mencipta tatasusunan integer dalam saiz 'sz' yang ditentukan.





Kemudian, kami mentakrifkan fungsi enQueue() dan dequeue(). Enqueue() memasukkan nilai ke dalam baris gilir bulat yang ditentukan dari ekor. Walau bagaimanapun, elemen dalam kepala baris gilir bulat dihapuskan oleh fungsi dequeue(). Fungsi ahli showQueue() memaparkan nilai baris gilir bulat.

Langkah 1: Cipta Fungsi untuk Memasukkan Elemen dalam Penampan Pekeliling



Dalam langkah awal, kami menetapkan kelas di mana ahli persendirian dimulakan dan fungsi ahli persendirian ditetapkan untuk melaksanakan baris gilir pekeliling. Sekarang, kami menetapkan fungsi untuk mencipta baris gilir bulat dan memasukkan nilai di dalam baris gilir bulat menggunakan algoritma.

batal MyQueue::enQueue ( int val )

{

jika ( ( kepala == 0 && ekor == Qsize - 1 ) || ( ekor == ( kepala - 1 ) % ( Qsize - 1 ) ) )

{

cout << ' \n Barisan Beratur Terisi' ;

kembali ;

}



lain jika ( kepala == - 1 )

{

kepala = ekor = 0 ;

NewArr [ ekor ] = val;

}



lain jika ( ekor == Qsize - 1 && kepala ! = 0 )

{

ekor = 0 ;

NewArr [ ekor ] = val;

}



lain {

ekor ++;

NewArr [ ekor ] = val;

}

}

Di sini, kami memanggil fungsi 'enqueue()' daripada kelas 'MyQueue' untuk memasukkan elemen dalam baris gilir bulat jika baris gilir kosong atau underflow. Fungsi 'enqueue()' diluluskan dengan parameter 'val' dan masukkan nilai dari ekor baris gilir bulat. Kami menetapkan syarat 'jika-lain' untuk memasukkan nilai dalam baris gilir bulat untuk ini. Pernyataan “jika” pertama iaitu “jika ((kepala == 0 && ekor == Qsize – 1) || (ekor == (kepala – 1) % (Qsize – 1)))” menyemak dua syarat sama ada kepala berada di kedudukan permulaan dan ekor berada di kedudukan akhir baris gilir bulat. Kemudian, ia menyemak sama ada ekor berada dalam satu kedudukan di bahagian belakang kedudukan kepala. Jika mana-mana syarat ini dipenuhi, baris gilir tidak kosong dan gesaan menjana mesej.

Seterusnya, kita mempunyai syarat 'else-if' yang mengenal pasti sama ada baris gilir kosong. Jika ya, nilai dimasukkan dalam baris gilir. Memandangkan kepala disimpan bersamaan dengan -1, itu menunjukkan bahawa baris gilir kosong dan nilai perlu dimasukkan dalam baris gilir bulat. Untuk ini, kami menetapkan kepala dan ekor sama dengan 0. Kemudian, kami memasukkan nilai dari kedudukan ekor ke dalam baris gilir pekeliling 'NewArr'.

Kemudian, kita mempunyai keadaan 'else-if' ketiga kami yang menyemak sama ada ekor berada di kedudukan terakhir baris gilir dan kepala bukan kedudukan permulaan baris gilir. Keadaan ini berlaku apabila ekor mencapai hujung dan kedudukan permulaan masih mempunyai ruang. Untuk ini, kita perlu menetapkan kepala pada 0, dan elemen ditambah dari kedudukan ekor. Akhir sekali, jika semua syarat yang diberikan tidak dipenuhi, baris gilir tidak kosong atau penuh. Untuk kes ini, kami menambah ekor sebanyak 1 dan nilai ditambah daripada kedudukan ekor baharu.

Langkah 2: Cipta fungsi untuk Memadamkan Elemen daripada Penampan Pekeliling

Kami menetapkan kod sebelumnya untuk mencipta dan memasukkan elemen dalam baris gilir bulat menggunakan fungsi enqueue(). Sekarang, kami mentakrifkan pelaksanaan mengalih keluar elemen daripada penimbal bulat jika ia melimpah.

int MyQueue::deQueue ( )

{

jika ( kepala == - 1 )

{

cout << ' \n Beratur adalah Percuma' ;

kembali INT_MIN;

}



int MyData = NewArr [ kepala ] ;

NewArr [ kepala ] = -1 ;



jika ( kepala == ekor )

{

kepala = -1 ;

ekor = -1 ;

}



lain jika ( kepala == Qsize - 1 )

kepala = 0 ;



lain

kepala ++;



kembali MyData;



}

Dalam kod yang diberikan, kami memanggil fungsi dequeue() daripada kelas 'Myqueue' untuk mengalih keluar elemen daripada indeks kepala. Jadi, kami mempunyai pernyataan 'jika' yang menyemak sama ada baris gilir kosong. Kepala ditetapkan dengan nilai '-1' yang mewakili baris gilir kosong. Mesej dijana bahawa baris gilir kosong dan kemudian kembalikan INT_MIN yang merupakan nilai minimum malar untuk int. Pernyataan 'jika' menentukan sama ada baris gilir tidak berpenghuni. Untuk ini, kami mentakrifkan pembolehubah 'MyData' dan menetapkan nilai elemen pada kepala baris gilir. Kemudian, kami menetapkan kepala pada kedudukan -1 yang menunjukkan bahawa nilai ini dialih keluar daripada baris gilir. Selepas ini, kita semak sama ada kepala dan ekor sama atau tidak. Jika kedua-duanya adalah sama, kami memberikan nilai '-1' kepada kedua-duanya, mewakili baris gilir bulat yang kosong. Akhir sekali, kami menyemak sama ada dequeue() berfungsi jika kepala berada pada indeks terakhir baris gilir. Untuk ini, kami menetapkannya dengan nilai '0' yang berputar pada permulaan tatasusunan. Jika tiada syarat yang diberikan adalah benar, nilai kepala dinaikkan dan elemen yang ditolak dikembalikan.

Langkah 3: Cipta Fungsi untuk Menunjukkan Elemen Penampan Pekeliling

Dalam bahagian ini, kami memanggil fungsi showQueue() untuk memaparkan elemen baris gilir pekeliling 'NewArr'.

batal MyQueue::showQueue ( )

{

jika ( kepala == - 1 )

{

cout << ' \n Beratur adalah Percuma' ;

kembali ;

}



cout << ' \n Elemen Baris Pekeliling: ' ;



jika ( ekor > = kepala )

{

untuk ( int i = kepala ; i < = ekor ; i++ )

cout << NewArr [ i ] << ' ' ;

}



lain

{

untuk ( int i = kepala ; i < Qsize; i++ )

cout << NewArr [ i ] << ' ' ;



untuk ( int i = 0 ; i < = ekor ; i++ )

cout << NewArr [ i ] << ' ' ;

}

}

Status kosong baris gilir disahkan terlebih dahulu. Petunjuk bahawa baris gilir pekeliling adalah percuma dipaparkan jika baris gilir adalah percuma. Jika tidak, fungsi akan menunjukkan elemen baris gilir bulat. Untuk ini, kami mentakrifkan pernyataan 'jika' di mana kami mempunyai ekor yang lebih besar daripada atau sama dengan kepala. Syarat ini ditetapkan untuk mengendalikan kes apabila baris gilir pekeliling tidak selesai.

Untuk kes ini, kami menggunakan gelung 'untuk' untuk beralih dari kepala ke ekor dan mencetak nilai baris gilir bulat. Kes seterusnya ialah di mana baris gilir pekeliling selesai. Untuk ini, kami menyemak menggunakan keadaan 'jika' di mana ekor kurang daripada kepala. Kemudian, kita perlu menggunakan dua gelung di mana yang pertama berulang dari kepala ke penghujung baris gilir dan yang kedua berulang dari permulaan ekor.

Langkah 4: Cipta Fungsi Utama() Program Baris Pekeliling

Akhir sekali, kami mencipta fungsi main() program di mana kami memasukkan lima integer dalam baris gilir bulat dan memaparkan integer baris gilir. Selepas itu, kami menunjukkan integer yang dipadamkan daripada baris gilir bulat dengan memanggil fungsi dequeue(). Selepas memesongkan beberapa elemen, kami mengisi baris gilir sekali lagi dengan memasukkan elemen baharu menggunakan fungsi enqueue().

int utama ( )

{

MyQueue itu ( 5 ) ;



// Memasukkan elemen dalam Barisan Pekeliling

que.enQueue ( sebelas ) ;

que.enQueue ( 12 ) ;

que.enQueue ( 13 ) ;

que.enQueue ( 14 ) ;

que.enQueue ( lima belas ) ;



// Paparkan elemen yang ada dalam Barisan Pekeliling

que.showQueue ( ) ;



// Memadam elemen daripada Baris Pekeliling

cout << ' \n Elemen Dipadam = ' << que.deQueue ( ) ;

cout << ' \n Elemen Dipadam = ' << que.deQueue ( ) ;



que.showQueue ( ) ;



que.enQueue ( 16 ) ;

que.enQueue ( 17 ) ;

que.enQueue ( 18 ) ;



que.showQueue ( ) ;



kembali 0 ;



}

Pengeluaran:

Keputusan pelaksanaan baris gilir bulat ditunjukkan pada skrin gesaan C++.

Kesimpulan

Kesimpulannya, topik penimbal pekeliling diterangkan dengan mendalam dalam artikel ini. Kami mencipta penimbal pekeliling terlebih dahulu, kemudian menerangkan cara memadamkan daripada baris gilir pekeliling, dan kemudian memaparkan elemen pekeliling dalam C++.