C++数据结构与算法_2_线性表 -顺序表的应用示例

C++数据结构与算法_2_线性表 --顺序表的应用示例

顺序表的应用示例

--顺序表的并运算与交运算

#include "SeqList.h"
using namespace std;

//并运算
void unionSL(SeqList<int> &LA,SeqList<int> &LB)
{
    int m = LA.Length();
    int n = LB.Length();
    for (int i = 1; i <= n; ++i)
    {
        int ival;
        LB.getData(i,ival);             //将数据从LB表中取出
        int searchVal = LA.Search(ival);

        if (searchVal == 0)             //如果该元素并不存在于LA表中
        {
            LA.Insert(m,ival);		//则插入之
            ++ m;
        }
    }
}

//交运算
void intersectionSL(SeqList<int> &LA,SeqList<int> &LB)
{
    int m = LA.Length();
    int i = 1;

    while (i <= m)
    {
        int ival;
        LA.getData(i,ival);             //将数据从LA中取出
        int searchVal = LB.Search(ival);

        if (searchVal == 0)             //如果发现该数据并不存在于LB中
        {
            LA.Remove(i,ival);		//则将其删除
            -- m;			//表长缩短[勿忘!]
        }
        else
        {
            ++ i;
        }
    }
}

//测试程序
int main()
{
    freopen("input","r",stdin);
    SeqList<int> L1,L2;
    L1.input();
    L2.input();
    unionSL(L1,L2);
    L1.output();
    cout << endl;

    SeqList<int> L3;
    L3.input();
    intersectionSL(L3,L2);
    L3.output();
}

/**测试数据
*5 1 2 3 4 5 6
*4 11 2 3 4 9
*
*4 11 12 13 4 19
*/


/*输出结果(由于使用了重定向,所以输入的数据不会显示在屏幕上)*/

C++数据结构与算法_2_线性表 -顺序表的应用示例