3.1
void print_list(list head)
{while(head!=NULL)
{
printf("%d\t",head->data);
head = head->next;
}
}
3.2
#include <stdio.h>
#include <stdlib.h>
struct node
{
int data;
struct node* next;
};
typedef struct node* list;
list init_list(list L)
{
L=(list)malloc(sizeof(struct node));
L->next=NULL;
return L;
}
void insert_list(list L,int x)
{
list p=L;
while(p->next!=NULL&&p->next->data<x)
{
p=p->next;
}
list tmp=(list)malloc(sizeof(struct node));
tmp->data = x;
tmp->next = p->next;
p->next=tmp;
}
void print_list(list L)
{
while(L->next)
{
printf("%d\t",L->next->data);
L=L->next;
}
printf("\n");
}
void yu(list p,list q,list r) //r=p||q
{
while(p->next&&q->next)
{
if(p->next->data==q->next->data)
{
insert_list(r,p->next->data);
p=p->next;
q=q->next;
}
else if(p->next->data>q->next->data)
{
q=q->next;
}
else p=p->next;
}
}
void bing(list p,list q,list r)//求交集
{
while(p->next&&q->next)
{
if(p->next->data<q->next->data)
{
insert_list(r,p->next->data);
p=p->next;
}
else if(p->next->data>q->next->data)
{
insert_list(r,q->next->data);
q=q->next;
}
else
{
insert_list(r,q->next->data);
q=q->next;
p=p->next;
}
}
while(p->next)
{
insert_list(r,p->next->data);
p=p->next;
}
while(q->next)
{
insert_list(r,q->next->data);
q=q->next;
}
}
void printlots(list p,list q)
{
int cnt=1;
while(p->next&&q->next)
{
if(p->next->data==cnt)
{
printf("%d\t",q->next->data);
p=p->next;
}
q=q->next;
cnt++;
}
}
int main()
{
int x,i;
list A,B,C,D;
A=init_list(A);
B=init_list(B);
C=init_list(C);
D=init_list(D);
for(i=0;i<5;i++) {scanf("%d",&x); insert_list(A,x);}
for(i=0;i<5;i++) {scanf("%d",&x); insert_list(B,x);}
print_list(A);
print_list(B);
/*yu(A,B,C);
print_list(C);
bing(A,B,D);
print_list(D);
*/
printlots(A,B);
return 0;
}
//测试用例1 3 5 7 9 1 2 4 6 9