class Node
{
Node *next;
int data;
Node();
Node(int e, Node *p = nullptr):data(e),next(p){}
friend class LinkList;
};
class LinkList
{
private:
Node *head;
int length;//当前长度
public:
LinkList();
LinkList(int a[], int n);
virtual ~LinkList(); ////头结点要设置为空
int GetLength()const;
bool IsEmpty()const;
void Clear();
void Traverse()const;////使用length
LinkList& operator =(const LinkList& L);
LinkList& operator +(const LinkList & L);
void InsertElem(int &e);///插入排序
};
#include"LinkList.h"
#include
#include
using std::cout;
using std::endl;
Node::Node()
{
next = NULL;
data = 0;
}
LinkList::LinkList()
{
head = new Node;
length = 0;
}
LinkList::LinkList(int a[], int n)
{
for(int i=0;i
{
for(int j=i+1;j
if (a[i] > a[j])
{
int tem;
tem = a[i];
a[i] = a[j];
a[j] = tem;
}
}
head = new Node ;
Node *p=head;
for (int i = 0; i < n; i++)
{
p->next = new Node(a[i],NULL);
assert(p->next);
p = p->next;
}
length = n;
}
void LinkList::Clear()
{
Node *p = head->next;
while (p != NULL)
{
head->next = p->next;
delete p;
p = head->next;
}
}
LinkList::~LinkList()
{
Clear();
delete head;
}
int LinkList::GetLength()const
{
return length;
}
void LinkList::Traverse()const
{
Node *p = this->head;
while (p->next != NULL)
{
cout << p->next->data << " ";
p = p->next;
}
}
LinkList &LinkList::operator =(const LinkList& L)
{
this->length = L.length;
Node *p = this->head;
Node *q = L.head;
for (int i = 0; i < L.length; i++)
{
p->next = q->next;
p = p->next;
q = q->next;
}
return *this;
}
LinkList &LinkList::operator +(const LinkList& L)
{
LinkList tem;
tem.length = this->length + L.length;
Node *t = tem.head;
tem.head->next=t;
Node *p = this->head;
Node *q = L.head;
while (p ->next!= NULL && q ->next!= NULL)
{
if(p->next->data >= q->next->data)
{
t->next = p->next;
p = p->next;
t = t->next;
}
else
{
t->next = q->next;
q = q->next;
t = t->next;
}
}
if (p->next == NULL)
{
t->next = q->next;
}
else
t->next = p->next;
return tem;
}
void LinkList::InsertElem(int &e)
{
Node *q = new Node(e, NULL);
Node *p = this->head;
while (e > p->next->data)
{
p = p->next;
}
q->next = p->next;
p->next = q;
}
#include"LinkList.h"
#include
using namespace std;
int max(int x, int y) {
if (x > y) return x;
else return y;
}
int main()
{
int a[5], b[5];
cout << "请输入五个整数:" << endl;
for (int i = 0; i < 5; i++)
cin >> a[i];
LinkList L1(a, 5);
L1.Traverse();
cout << endl;
cout << "请再次输入五个整数:" << endl;
for (int i = 0; i < 5; i++)
cin >> b[i];
LinkList L2(b, 5);
L2.Traverse();
LinkList L3 = L1 + L2;
L3.Traverse();
system("pause");
return 0;
}