首页 > 代码库 > C++数据结构与算法_2_线性表 --顺序表的应用示例

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

<style type="text/css">h2.western { font-family: "Liberation Sans",sans-serif; font-size: 16pt; }h2.cjk { font-family: "微软雅黑"; font-size: 16pt; }h2.ctl { font-family: "AR PL UMing CN"; font-size: 16pt; }h1 { margin-bottom: 0.21cm; }h1.western { font-family: "Liberation Sans",sans-serif; font-size: 18pt; }h1.cjk { font-family: "微软雅黑"; font-size: 18pt; }h1.ctl { font-family: "AR PL UMing CN"; font-size: 18pt; }p { margin-bottom: 0.25cm; line-height: 120%; }</style>

顺序表的应用示例

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

#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
*/


<style type="text/css">p { margin-bottom: 0.25cm; line-height: 120%; }</style>

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