| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8874 人关注过本帖
标题:两个集合求并集(用链表的方式)
取消只看楼主 加入收藏
eagle4959445
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-5-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:0 
两个集合求并集(用链表的方式)
#include<stdio.h>
#include<stdlib.h>

struct LNode
{
    int data;
    struct LNode *next;
};
typedef struct LNode *LinkList;//表的头指针类型

void CreateListF(LinkList L, int a[], int n);
int ListLength(LinkList L);//求表的长度
int GetElem(LinkList L, int i, int *e);
int LocateElem(LinkList L, int x);
int ListInsert(LinkList *L, int x, int l);
void Union(LinkList *La, LinkList Lb);

void CreateListF(LinkList L, int a[], int n)//创建一个单链表
{
    LinkList s;
    int i;
    L=(LinkList *)malloc(sizeof(LinkList));//创建头结点
    L->next=NULL;
    for(i=0; i<n; i++)
    {
        s=(LinkList *)malloc(sizeof(LinkList));//创建新结点
        s->data=a[i];
        s->next=L->next;
        L->next=s;
    }
}

int ListLength(LinkList L)//求表的长度
{
    int i=0;
    LinkList p=L->next;
    while(p!=NULL)
    {
        i++;
        p=p->next;
    }
    return i;
}

int GetElem(LinkList L, int i, int *e)
{
    int j=1;
    LinkList p;
    p=L->next;
    if(i<1||i>ListLength(L))
    return 0;
    while(j<i)
    {
        p=p->next;
        j++;
    }
    e=p->data;
    return (1);
}

int LocateElem(LinkList L, int x)//判断运算
{
    int i=1;
    struct LNode *p;
    p=L->next;
    while(p!= NULL &&p->data!=x)
    {
        p=p->next;
        i++;
    }
    if(p==NULL)
    return (0);
    else return(i);
}

int ListInsert(LinkList *L, int x, int i)
{
    int j=1;
    LinkList p=L, s;
    s=(LinkList *)malloc(sizeof(LinkList));
    s->data=x;
    s->next=NULL;
    if(i<1||i>ListLength(L)+1)
    return 0;
    while(j<i)
    {
        p= p->next;
        j++;
    }
    s->next=p->next;
    p->next=s;
    return 1;
}
void Union(LinkList *La, LinkList Lb)
{
    int e;
    int La_len, Lb_len;
    int i;
    La_len=ListLength(La);
    Lb_len=ListLength(Lb);
    for(i=1; i<=Lb_len; i++)
    {
        GetElem(Lb, i, e);
        if(!LocateElem(La, e))
        ListInsert(La, ++La_len, e);
    }
}

int main(void)
{
   
    struct LNode A[60];
    struct LNode B[30];
    int i, a;
   
    printf("请输入A:");
    for(i=0; A[i].data!='\0' ; i++)
    {scanf("%d", &A[i].data);}
    printf("请输入B:");
    for(i=0; i<3; i++)
    {scanf("%d", &B[i].data);}
   
    printf("A是:");
    CreateListF(A, A->data, 3);
 CreateListF(B, B->data, 3);
 Union(A, B);
   
    for(i=0; i<6; i++)
    {printf("%d", A[i].data);}   
    return 0;
}

大神们帮我看看我哪里错了
搜索更多相关主题的帖子: include 
2017-05-23 14:17
快速回复:两个集合求并集(用链表的方式)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012076 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved