课后习题 2-12 合并有序表A、B为有序表C。
Array.h
#pragma once #include<iostream> using namespace std; class Array { public: int* data; int maxSize; int len; Array(int n = 30) { maxSize = n; data = new int[maxSize]; len = 0; } void creat(int arr[], int n) { for (int i = 0; i < n; i++) { data[i] = arr[i]; len++; } } void show() { for (int i = 0; i < len; i++) { cout << data[i] << " "; } cout << endl; } Array operator +(Array B) { Array C; C.maxSize = maxSize + B.maxSize; int p_a = 0; int p_b = 0; int p_c = 0; if (len > B.len) { while (p_b < B.len) { if (data[p_a] < B.data[p_b]) { C.data[p_c] = data[p_a]; p_a++; } else { C.data[p_c] = B.data[p_b]; p_b++; } p_c++; } while (p_a < len) { C.data[p_c] = data[p_a]; p_a++; p_c++; } } else { while (p_a < len) { if (data[p_a] < B.data[p_b]) { C.data[p_c] = data[p_a]; p_a++; } else { C.data[p_c] = B.data[p_b]; p_b++; } p_c++; } while (p_b < B.len) { C.data[p_c] = B.data[p_b]; p_b++; p_c++; } } C.len = len + B.len; return C; } };
main.cpp
#include"Arrray.h" int main() { Array A, B, C; int a[] = { 1,3,5,7,9 }; int b[] = { 2,4,6,8,10 }; A.creat(a, 5); B.creat(b, 5); C = A + B; C.show(); return 0; }

浙公网安备 33010602011771号