课后习题 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;
}

 

posted @ 2020-03-18 10:37  落地就是一把98K  阅读(144)  评论(0)    收藏  举报