用链表实现两个集合求并集

来源:互联网 发布:魔域名字大全霸气 编辑:程序博客网 时间:2024/05/06 04:30
 #include<stdio.h>
#include<stdlib.h>
#include<time.h>

 typedef struct node{
     int data;
     struct node *next;
 } LinkList;

 LinkList* initialList(LinkList *linkList){
     linkList = NULL;
     LinkList *p;
     int i = 0;
     srand(time(NULL));
     while(i < 10){
         p = (LinkList*)malloc(sizeof(LinkList));
         p ->data = rand() % 100;
         printf("%d  ", p ->data);
         p ->next = linkList;
         linkList = p;
         i ++;
     }
     printf("\n");
     return linkList;
 }
 LinkList* jiaoji(LinkList *La, LinkList *Lb){
    LinkList *p, *q, *t;
    LinkList *tmpLinkList = NULL;
    //Lc = NULL;
    for(p = La; p != NULL; p = p ->next){
        for(q = Lb; q != NULL; q = q ->next){
            if(p ->data == q ->data){
                t = (LinkList*)malloc(sizeof(LinkList));
                t ->data = q ->data;
                t ->next = tmpLinkList;
                tmpLinkList = t;
                break;
            }
        }
    }
    return tmpLinkList;
 }
 int main(){
    LinkList *La, *Lb, *Lc;
    La = initialList(La);
    Lb = initialList(Lb);
    Lc = jiaoji(La, Lb);
    printf("intersection is: ");
    while(Lc){
        printf("%d  ", Lc ->data);
        Lc = Lc ->next;
    }
    return 0;
 }
0 0