2.1 Union of two Sequence List

标头.h

#pragma once
#pragma once
#include <iostream>           //定义在“seqList.h”中
#include <stdlib.h>
using namespace std;
const int defaultSize = 100;
template < class E>
class SeqList {
protected:
    E* data;             //存放数组
    int maxSize;         //最大可容纳表项的项数
    int last;             //当前已存表项的最后位置
    //void reSize(int newSize);    //改变数组空间大小
public:
    SeqList(int sz = defaultSize) {
        maxSize = sz;
        data = new E[maxSize];
        last = -1;
    }
    //构造函数
    SeqList(SeqList<E>& L) {
        this->maxSize = L.maxSize;
        this->last = L.last;
        this->data = new E[maxSize];
        for (int i = 0; i <= last; i++) {
            this->data[i] = L.data[i];
        }
    }
    //复制构造函数

    int Size() const {
        return maxSize;
    }
    //求表最大容量
    int Length() const {
        return last + 1;
    }
    //计算表长度
    int Search(E x) const
    {
        E e = x;
        int ret = -1;
        for (int i = 0; i <= last; i++)
        {
            if (data[i] == e) {
                ret = i;
                break;
            }
        }
        return ret;
    }
    //搜索x在表中位置,函数返回表项序号
    int Locate(int i) const {
        if (i >= 1 && i <= last + 1) {
            return --i;
        }
        else {
            return -2;
        }
    }
    //定位第 i 个表项,函数返回表项序号
    bool getData(int i, E& x) const {
        x = data[i];
        return true;
    }
    //取第i个表项的值
    bool Insert(int i, E x) {
        for (int j = last; j >= i; j--) {
            data[j + 1] = data[j];
        }
        data[i] = x;
        last++;
        return true;
    }
    //插入
    bool Remove(int i, E& x) {
        x = data[i];
        for (int j = i; j < last; j++) {
            data[j] = data[j + 1];
        }
        last--;
        return true;
    }
    //删除
    void show() {
        for (int i = 0; i <= last; i++) {
            cout << data[i] << "  ";
        }
        putchar('\n');
    }
};

MyKit.h

#pragma once
#include"标头.h"
class MyKit {
public:
    static void Union(SeqList<int>& L1, SeqList<int>& L2) {
        int last1 = L1.Length() - 1;
        int last2 = L2.Length() - 1;
        int x;
        for (int i = 0; i <= last2; i++) {
            L2.getData(i, x);
            if (L1.Search(x) < 0) {
                ++last1;
                L1.Insert(last1, x);
            }
        }
    }
};

main:

#include"MyKit.h"
#include"标头.h"

int main()
{
    SeqList<int> L1,L2;
    L1.Insert(0, 9);
    L1.Insert(0, 6);
    L1.Insert(1, 3);
    cout << "L1:" << endl;
    L1.show();
    for (int i = 0; i <= 9; i++) {
        L2.Insert(0, i);
    }
    cout << "L2:" << endl;
    L2.show();
    MyKit::Union(L1,L2);
    cout << "Union:" << endl;
    L1.show();

}

猜你喜欢

转载自www.cnblogs.com/SlowIsFast/p/12441551.html
2.1
今日推荐