#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<iostream>
using namespace std;
int len1=0;
int len2=0;
typedef struct node{
int valum;
struct node *next;
}Node,*Linklist;
void creat_list(Linklist &head,int n)
{
Linklist p,q;
head=(Linklist)malloc(sizeof(Node));
head->next=NULL;
int i;
srand(time(0));
int flag[100]={0};
for(i=0;i<n;i++)
{
p=(Linklist)malloc(sizeof(Node));
while(1)
{
p->valum=rand()%89+10;
if(flag[p->valum]==0)
{
flag[p->valum]=1;
break;
}
}
p->next=head->next;
head->next=p;
}
}
void Display(Linklist head)
{
int i;
Linklist p;
p=head->next;
while(p)
{
if(p->valum)
{printf("%d ",p->valum);
p=p->next;}
else
p=p->next;
}
}
Linklist Partion(Linklist &pBegin, Linklist &pEnd)
{
int key = pBegin->valum;
Linklist p = pBegin;
Linklist q = p->next;
while(q!=pEnd)
{
if(q->valum < key)
{
p = p->next;
swap(p->valum,q->valum);
}
q = q->next;
}
swap(p->valum,pBegin->valum);
return p;
}
void QuickSort(Linklist &pBeign, Linklist pEnd)
{
if(pBeign != pEnd)
{
Linklist partion = Partion(pBeign,pEnd);
QuickSort(pBeign,partion);
QuickSort(partion->next,pEnd);
}
}
void N_list(Linklist &la,Linklist lb)
{
Linklist p,q;
p=la->next;
while(p)
{
q=lb->next;
while(q)
{
if(q->valum==p->valum)
{
break;
}
else
q=q->next;
}
if(q==NULL)
{
p->valum=0;
}
p=p->next;
}
}
void U_list(Linklist &la,Linklist &lb)
{
Linklist p,q;
p=la->next;
while(p)
{
q=lb->next;
while(q)
{
if(q->valum==p->valum)
{
q->valum=0;
p->valum=0;
break;
}
else
q=q->next;
}
p=p->next;
}
}
void D_list(Linklist &la,Linklist lb)
{
Linklist p,q;
p=la->next;
while(p)
{
q=lb->next;
while(q)
{
if(q->valum==p->valum)
{
break;
}
else
q=q->next;
}
if(q==NULL)
{
p->valum=0;
}
p=p->next;
}
}
int main()
{
Linklist La,Lb;
int n;
scanf("%d",&len1);
creat_list(La,len1);
scanf("%d",&len2);
creat_list(Lb,len2);
QuickSort(La,NULL);
Display(La);
putchar('\n');
QuickSort(Lb,NULL);
Display(Lb);
putchar('\n');
//N_list(La,Lb);
//Display(La);
U_list(La,Lb);
Display(La);
Display(Lb);
putchar('\n');
return 0;
}
集合的交并差(链表)(未完)
最新推荐文章于 2022-07-12 14:05:30 发布