#include
#include
#include
typedef int Elemtype;
typedef struct link{
Elemtype data;
struct link* next;
}slink;
int seed;
slink* initslink(int n)//初始化
{
slink *head,*p,*s;
int i;
head=(slink*)malloc(sizeof(slink));
p=head;
for(i=1;idata=rand();
p->next=s;
p=p->next;
}
p->next=NULL;
return head;
}
void print(slink *head)//打印元素
{
slink *p=head->next;
while(p)
{
printf("�",p->data);
p=p->next;
}
printf("
");
}
void combine(slink *head1,slink *head2)//归并纯化
{
slink *p=head1,*q,*flagq;
while(p->next)
p=p->next;
p->next=head2->next;
p=head1->next;
while(p)
{
q=p;
while(q->next)
{
flagq=q;
if(q->next->data==p->data)
{
q->next=q->next->next;
continue;
}
q=q->next;
}
p=p->next;
}
}
void findmax_min(slink *head,Elemtype *max,Elemtype *min)//查找最大最小值
{
*max=head->next->data;
*min=head->next->data;
slink *p=head->next->next;
while(p)
{
if(*max
data)
*max=p->data;
if(*min>p->data)
*min=p->data;
p=p->next;
}
}
void main()
{
int n;
srand(time(NULL));
seed=rand();
Elemtype max,min;
slink *head1=NULL,*head2=NULL;
srand(seed );
n=rand() 1;
printf("链表一有%d个数:",n);
head1=initslink(n);
print(head1);
srand(seed );
n=rand() 1;
printf("链表二有%d个数:",n);
head2=initslink(n);
print(head2);
combine(head1,head2);
findmax_min(head1,&max,&min);
printf("归并后:");
print(head1);
printf("the max Elem:%d
the min Elem:%d
",max,min);
}。
全部