一定要完全使用该模块呀!!,不能改的
用数组!
#define MAXSIZE 50 /* 存储空间初始分配量 */
typedef struct
{
ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
int length; /* 表当前有效长度 */
}SqList;
一定要完全使用该模块呀!!,不能改的
用数组!
#define MAXSIZE 50 /* 存储空间初始分配量 */
typedef struct
{
ElemType data[MAXSIZE]; /* 数组,存储数据元素 */
int length; /* 表当前有效长度 */
}SqList;
引自免费微信小程序:皆我百晓生
在C语言中,可以使用std::list
(std::vector)作为标准容器类来实现集合的合并。下面是一个简单的示例:
#include <iostream>
#include <vector>
// 定义一个包含两个元素的模板类,用于演示合并集合的过程
template<typename T>
class CombineList
{
public:
CombineList(const std::vector<T>& list1, const std::vector<T>& list2)
: m_list1(list1), m_list2(list2)
{
// 将列表1的第一个元素添加到m_list2的末尾
m_list2.push_back(m_list1[0]);
}
~CombineList()
{
// 删除m_list1的最后一个元素,同时移除m_list2的首个元素
m_list1.pop_back();
m_list2.erase(std::remove(m_list2.begin(), m_list2.end(), m_list1[0]), m_list2.end());
}
private:
std::vector<T> m_list1;
std::vector<T> m_list2;
};
int main()
{
// 创建两个包含两个整数的向量
std::vector<int> num1 = {1, 2, 3, 4, 5};
std::vector<int> num2 = {6, 7, 8, 9, 10};
// 创建一个新的合并集合对象
CombineList<int> combine(num1, num2);
// 打印合并后的集合
for (const auto& element : combine.m_list2)
{
std::cout << element << " ";
}
std::cout << std::endl;
return 0;
}
在这个示例中,我们首先定义了一个名为CombineList
的模板类,它接受两个参数:const std::vector<T>& list1
和const std::vector<T>& list2
。这个类包含两个成员变量:m_list1
和m_list2
,分别表示两个原始列表中的元素。
在构造函数中,我们将两个原始列表的第一个元素添加到m_list2
的末尾。这可以通过调用push_back()
方法实现,push_back()
函数会将指定元素推入已排序的m_list2
中,并将其新位置设为第一个位置。
对于~CombineList
函数,我们在结构体内部创建了m_list1
、m_list2
的副本,然后删除m_list1
的最后一个元素(即原值),同时删除m_list2
的首个元素。这样,m_list1
就被移除了,m_list2
就只剩下一个元素。
最后,在主函数中创建一个新的CombineList
对象combine
,并将其赋值给num1
和num2
。然后,我们遍历合并后的新列表m_list2
,打印出每个元素及其值。
注意:在实际应用中,为了避免对原结构进行修改,可以使用默认构造函数和拷贝构造函数来创建合并对象。例如:
// 基本操作构造函数
CombineList(const std::vector<int>& list1, const std::vector<int>& list2)
: CombineList(list1) {}
// 拷贝构造函数
CombineList(const CombineList& other)
: CombineList(other.m_list1, other.m_list2) {}
这两种构造函数的差异在于是否允许直接对原始列表进行复制。如果你只是想要创建一个新的合并对象,而不需要保存原始列表的数据,那么默认构造函数是合适的。而在某些情况下,如试图保留原始列表的一些信息(比如访问列表中的某个元素时需要指定其索引位置),你需要提供拷贝构造函数以便进行复制操作。