算法很简单。
想了一下 还是有必要比较两个集合的大小 比较两个链的长度即可。对后面判定状态有帮助。
令j>=k;
判断是否为子集的算法。
1、取a中的第一个节点j
2、取b中的第一个节点k
3、比较j和k的数据,相等则k节点后移,否则j节点后移并判断是否为空,是则break,否则继续比较j和k的数据。
4、如果k==NULL 则是子集。
代码如下。
#include<iostream>
using namespace std;
template <class T>
struct Node{
T data;
Node<T>* next;
};
template <class T>
class LinkList{
private:
Node<T>* first;
public:
LinkList();
LinkList(int n,T a[]);
int length();
void print();
Node<T>*pop();
};
template <class T>
LinkList<T>::LinkList(){
first=new Node<T>;
first->next=NULL;
}
template <class T>
LinkList<T>::LinkList(int n,T a[]){
first=new