Program C++ untuk menolak tatasusunan ke tatasusunan lain

WBOY
Lepaskan: 2023-09-04 13:37:06
ke hadapan
1294 orang telah melayarinya

Program C++ untuk menolak tatasusunan ke tatasusunan lain

Struktur data jujukan linear yang dipanggil tatasusunan digunakan untuk menyimpan data homogen dalam satu siri kawasan memori Sesuatu tatasusunan perlu mempunyai ciri tertentu untuk memasukkan, memadam, melintasi dan mengemas kini elemen dengan berkesan, sama seperti struktur data lain. . Tatasusunan kami dalam C++ adalah statik Selain itu, C++ menawarkan beberapa struktur tatasusunan dinamik yang boleh disimpan di dalam tatasusunan statik akan melihat cara untuk menolak elemen satu tatasusunan di dalam tatasusunan lain dalam C++.

Fahami konsep dan gambarkan dengan contoh

Given array A = [10, 14, 65, 85, 96, 12, 35, 74, 69]
Another given array B = [56, 42, 15, 18, 20, 32]

Pushing the elements of B into A, signifies that A becomes:
A = [10, 14, 65, 85, 96, 12, 35, 74, 69, 56, 42, 15, 18, 20, 32]
Salin selepas log masuk

Dalam contoh di atas, jelas bahawa kita mempunyai dua tatasusunan A dan B. Menolak B ke dalam A bermakna memasukkan semua elemen dari B ke dalam tatasusunan A. Unsur-unsur ini akan ditambah pada penghujung A. Tetapi untuk mencapai ini, kita perlu menyemak satu perkara, iaitu, sama ada baki kekosongan dalam A (iaitu saiz maksimum A tolak bilangan elemen sedia ada dalam A) adalah sama atau lebih besar daripada bilangan elemen dalam B. Jika tidak, kita tidak boleh menolak mereka ke A. Mari kita lihat algoritma dan kod pelaksanaan C++.

Algoritma

  • ambil tatasusunan A dan B sebagai input, bilangan elemen n dalam A sebagai input, bilangan elemen m dalam B sebagai input

  • Jika A mempunyai ruang yang cukup untuk menampung keseluruhan B, maka

  • untuk setiap elemen e dalam B, lakukan

  • tambahkan e pada tatasusunan A

  • Tamatkan kitaran

  • tamat jika

  • kembalikan array A dan saiz baru n

Contoh

#include <iostream>
# define Z 50

using namespace std;

void displayArr(int arr[], int n){
   for( int i = 0; i < n; i++ ){
      cout << arr[ i ] << ", ";
   }
   cout << endl;
}
void insertAtEnd( int arr[], int &n, int e ){
   if( n < Z ) {
      arr[ n ] = e;
   }
   n = n + 1;
}

void pushArrayToAnother( int A[], int &n, int B[], int m ) {
   if( (Z - n) >= m ){
      for( int i = 0; i < m; i++ ) {
         insertAtEnd( A, n, B[i] );   
      }
   }
}

int main() {
   int A[ Z ] = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14};
   int n = 12;
   
   int B[ Z ] = {56, 84, 23, 12, 17, 19, 65, 32};
   int m = 8;
   
   cout << "First Array: ";
   displayArr( A, n );
   
   cout << "Second Array: ";
   displayArr( B, m );
   
   pushArrayToAnother( A, n, B, m );
   cout << "Array A after pushing B:" << endl;
   displayArr( A, n );
}
Salin selepas log masuk

Output

First Array: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 
Second Array: 56, 84, 23, 12, 17, 19, 65, 32, 
Array A after pushing B:
57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 56, 84, 23, 12, 17, 19, 65, 32,
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Menggunakan Tatasusunan Dinamik atau Vektor

Perkara yang sama boleh dilakukan menggunakan vektor. Vektor ialah tatasusunan dinamik yang terdapat dalam C++ STL. Jika kita mempertimbangkan untuk menggunakan vektor, kita tidak perlu mengambil berat tentang ruang yang ada semasa memasukkan elemen. Oleh kerana vektor adalah dinamik, ia secara automatik menambah slot baharu apabila diperlukan. Algoritma adalah sama dengan semakan slot yang tersedia.

Algoritma

  • ambil tatasusunan A dan B sebagai input, bilangan elemen n dalam A sebagai input, bilangan elemen m dalam B sebagai input

  • untuk setiap elemen e dalam B, lakukan

    • tambahkan e pada tatasusunan A

  • Tamatkan kitaran

  • kembalikan array A dan saiz baru n

Contoh

#include <iostream>
#include <vector>
# define Z 50

using namespace std;

void displayArr( vector<int> v ){
   for( int i = 0; i < v.size() ; i++ ) {
      cout << v[ i ] << ", ";
   }
   cout << endl;
}

void pushArrayToAnother( vector<int> &A, vector<int> B ){
   for( int i = 0; i < B.size() ; i++ ) {
      A.push_back( B[i] );
   }
}

int main(){
   vector<int> A = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14};

   vector<int> B = {56, 84, 23, 12, 17, 19, 65, 32};

   cout << "First Array: ";
   displayArr( A );

   cout << "Second Array: ";
   displayArr( B );

   pushArrayToAnother( A, B );
   cout << "Array A after pushing B:" << endl;
   displayArr( A );
}
Salin selepas log masuk

Output

First Array: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 
Second Array: 56, 84, 23, 12, 17, 19, 65, 32, 
Array A after pushing B:
57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 56, 84, 23, 12, 17, 19, 65, 32,
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Gunakan fungsi insert() dalam vektor

Kaedah sebelum ini adalah proses manual. Walau bagaimanapun, kita boleh menggunakan fungsi insert() dalam vektor STL untuk mencapai fungsi yang sama. Fungsi insert() menerima penunjuk kedudukan (menggunakan iterator) dan iterator, menyalin elemen daripada satu objek bekas dan memasukkannya daripada indeks kedudukan ke objek bekas yang lain. Mari kita lihat pelaksanaan C++ untuk mendapatkan pandangan yang jelas.

Contoh

#include <iostream>
#include <vector>
# define Z 50

using namespace std;

void displayArr( vector<int> v ){
   for( int i = 0; i < v.size() ; i++ ){
      cout << v[ i ] << ", ";
   }
   cout << endl;
} 

void pushArrayToAnother( vector<int> &A, vector<int> B ) { 
   A.insert( A.end(), B.begin(), B.end() ); 
}

int main() {
   vector<int> A = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14};
   
   vector<int> B = {56, 84, 23, 12, 17, 19, 65, 32};
   
   cout << "First Array: ";
   displayArr( A );
   
   cout << "Second Array: ";
   displayArr( B );
   
   pushArrayToAnother( A, B );
   cout << "Array A after pushing B:" << endl;
   displayArr( A );
}
Salin selepas log masuk

Output

First Array: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 
Second Array: 56, 84, 23, 12, 17, 19, 65, 32, 
Array A after pushing B:
57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, 56, 84, 23, 12, 17, 19, 65, 32,
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kesimpulan

Dalam artikel ini kami melihat beberapa cara berbeza untuk memasukkan atau menolak elemen tatasusunan ke penghujung tatasusunan lain. Dalam contoh pertama, kami menggunakan tatasusunan C++ yang mudah, dan kami perlu memberi perhatian khusus kepada ruang yang tersedia dalam tatasusunan statik. Dalam dua kaedah seterusnya, kami tidak perlu risau tentang perkara ini kerana kami menggunakan vektor dinamik yang akan memperuntukkan ruang secara automatik apabila diperlukan.

Atas ialah kandungan terperinci Program C++ untuk menolak tatasusunan ke tatasusunan lain. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!