以前也都是用C#实现的顺序表的合并,今天还是用C++来实现以下。
思路分析:
实现一个顺序表的合并是比较简单的,既然要合并两个顺序表,可以通过借助一个新的顺序表,将要合并的两个顺序表的元素先放到新的顺序表当中,然后再实现排序就可以了。
实现代码:
//
// main.cpp
// 顺序表的合并操作
//
// Created by 追风筝的人 on 2018/9/21.
// Copyright © 2018年 追风筝的人. All rights reserved.
//
#define MAXSIZE 100
typedef int DataType;
typedef struct
{
DataType data[MAXSIZE];
int length;
}SeqList;
#include
using namespace std;
//这是添加方法,给顺序表添加元素。
void AddEle( SeqList &L,DataType item)
{
L.data[L.length]=item;
L.length++;
}
/*
写了一个函数去实现两个顺序表的合并已经排序的操作。
*/
void MergeList(SeqList LA,SeqList LB,SeqList &LC)
{
int i=0;
for (;i<LA.length;i++)
{
LC.data[i]=LA.data[i];
}
for (int n=0; n<LB.length; n++)
{
LC.data[n+LA.length]=LB.data[n];
}
LC.length=LA.length+LB.length;
//上面的顺序表的合并操作
//下面两个循环是对新的顺序表进行了一个排序。
for (int k=0; k<LC.length; k++)
{
for (int m=0; m<LC.length-k-1; m++)
{
if (LC.data[m]>LC.data[m+1])
{
DataType temp;
temp=LC.data[m];
LC.data[m]=LC.data[m+1];
LC.data[m+1]=temp;
}
}
}
}
int main(int argc, const char * argv[]) {
SeqList LA;
SeqList LB;
SeqList LC;
AddEle(LA, 1);
AddEle(LA, 2);
AddEle(LA, 5);
AddEle(LB, 1);
AddEle(LB, 4);
AddEle(LB, 4);
AddEle(LB, 7);
AddEle(LB, 8);
cout<<“合并后的顺序表为:”<<endl;
MergeList(LA, LB, LC);
for (int i=0; i<LC.length; i++)
{
cout<<LC.data[i]<<" ";
}
cout<<endl;
return 0;
}