Dengan menggunakan tatasusunan dan struktur data, adalah mungkin untuk menyimpan data homogen (identical ) merentas berbilang lokasi memori. Faedah utama menggunakan tatasusunan ialah kita boleh mendapatkannya dari mana-mana kedudukan menggunakan parameter indeks. Struktur data ini menjadi linear kerana data mesti dimasukkan dan diekstrak langkah demi langkah. Kita hanya perlu meletakkan indeks atau nombor kedudukan elemen di dalam kurungan segi empat sama untuk mendapatkannya daripada tatasusunan. Dalam artikel ini, kami akan menggunakan tatasusunan A dan elemen lain e. Kami akan memasukkan e pada kedudukan permulaan A dalam C++.
Given array A = [10, 14, 65, 85, 96, 12, 35, 74, 69] After inserting 23 at the end, the array will look like this: [23, 10, 14, 65, 85, 96, 12, 35, 74, 69]
Dalam contoh di atas, kami mempunyai tatasusunan A yang mengandungi sembilan elemen. Kami akan memasukkan elemen lain 23 pada permulaan tatasusunan A. Tatasusunan yang terhasil mengandungi semua elemen ditambah dengan 23 terkemuka. Untuk memasukkan elemen pada permulaan kita perlu mengalihkan semua elemen satu kedudukan ke kanan, kemudian slot pertama akan kosong dan kita meletakkan elemen baru dalam kedudukan itu. Mari kita lihat algoritma untuk pemahaman yang lebih jelas.
Ambil tatasusunan A dan elemen e
Jika tatasusunan A mempunyai ruang yang cukup untuk memasukkan elemen e, maka
Untuk i dalam julat dari n-1 hingga 0, lakukan perkara berikut:
A[ i + 1 ] = A[ i ]
Tamatkan gelung
A[0]=e
kenaikan n 1
Tamat jika
Kembalikan A
#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 insertAtBeginning( int A[], int &n, int e ){ if( n + 1 < Z ) { for( int i = n - 1; i >= 0; i-- ) { A[ i + 1 ] = A[ i ]; } A[ 0 ] = e; n = n + 1; } } int main() { int A[ Z ] = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14}; int n = 12; cout << "Array before insertion: "; displayArr( A, n ); cout << "Inserting 58 at the beginning:" << endl; insertAtBeginning( A, n, 58 ); cout << "Array after insertion: "; displayArr( A, n ); cout << "Inserting 225 at the beginning:" << endl; insertAtBeginning( A, n, 225 ); cout << "Array after insertion: "; displayArr( A, n ); }
Array before insertion: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, Inserting 58 at the beginning: Array after insertion: 58, 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, Inserting 225 at the beginning: Array after insertion: 225, 58, 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14,
Vector ialah struktur data dinamik yang merupakan sebahagian daripada C++ STL. Kita boleh mendapatkan fungsi yang serupa dengan tatasusunan dalam vektor. Tetapi dalam vektor kita boleh memasukkan hanya pada hujung atau belakang. Tidak ada cara langsung untuk memasukkan pada permulaan. Walau bagaimanapun, kita boleh mengalihkan kedudukan elemen satu kembali seperti sebelumnya dan memasukkan elemen baharu pada permulaan. Atau kita boleh mencipta satu lagi vektor elemen yang mengandungi hanya elemen baharu dan kemudian menggabungkannya. Oleh itu, vektor yang terhasil akan mengandungi semua elemen sebelumnya dan elemen baharu pada permulaan. Mari kita lihat algoritma dan pelaksanaan C++.
Ambil tatasusunan A dan elemen e
Buat vektor kosong B
Masukkan e ke dalam B
A := Sambungkan B dengan A (mula-mula B kemudian A)
Kembalikan A
#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; } vector<int> insertAtBeginning( vector<int> A, int e ){ vector<int> B( 1 ); B[ 0 ] = e; B.insert( B.end(), A.begin(), A.end() ); return B; } int main() { vector<int> A = {57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14}; cout << "Array before insertion: "; displayArr( A ); cout << "Inserting 58 at the beginning:" << endl; A = insertAtBeginning( A, 58 ); cout << "Array after insertion: "; displayArr( A ); cout << "Inserting 225 at the beginning:" << endl; A = insertAtBeginning( A, 225 ); cout << "Array after insertion: "; displayArr( A ); }
Array before insertion: 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, Inserting 58 at the beginning: Array after insertion: 58, 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14, Inserting 225 at the beginning: Array after insertion: 225, 58, 57, 10, 14, 19, 86, 52, 32, 14, 76, 65, 32, 14,
Dalam artikel ini, kita telah melihat cara memasukkan elemen pada permulaan tatasusunan. Di sini kita membincangkan dua penyelesaian yang berbeza. Penyelesaian pertama menggunakan tatasusunan C++ statik, manakala penyelesaian kedua menggunakan vektor. Vektor tidak mempunyai cara untuk memasukkan elemen secara langsung pada permulaan. Kita boleh memasukkan elemen secara langsung pada penghujung menggunakan kaedah push_back(). Untuk melakukan ini, kami menggunakan helah di mana kami mencipta tatasusunan saiz 1 dan memasukkan elemen baharu ke dalamnya. Kemudian gabungkannya dengan tatasusunan yang diberikan. Kita boleh mencapai kesan yang sama menggunakan senarai. Walau bagaimanapun, senarai C++ mempunyai kaedah push_front(), yang memasukkan elemen terus di hadapan. Tetapi senarai bukan tatasusunan, ia adalah senarai terpaut.
Atas ialah kandungan terperinci Program C++ untuk menambah elemen pada permulaan tatasusunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!