| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 718 人关注过本帖
标题:用c语言链表实现集合并集时的问题
只看楼主 加入收藏
zhaoshirui
Rank: 2
等 级:论坛游民
帖 子:26
专家分:12
注 册:2013-4-7
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:4 
用c语言链表实现集合并集时的问题
想用链表求两个集合的并集,交集,差集,但是写并集的时候就出现了问题。我往大神指点,下面贴上代码
#include<stdio.h>
#include<stdlib.h>

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

 void CreateLinkList(LinkList &L,int n)
 { // 正位序(插在表尾)输入n个元素的值,建立带表头结构的单链线性表
   int i;
   LinkList p,q;
   L=(LinkList)malloc(sizeof(LNode)); // 生成头结点
   L->next=NULL;
   q=L;
   printf("请输入%d个数据\n",n);
   for(i=1;i<=n;i++)
   {
     p=(LinkList)malloc(sizeof(LNode));
     scanf("%d",&p->data);
     q->next=p;
     q=q->next;
   }
   p->next=NULL;
 }

 int LocateElem_L(LinkList &L,int e)  //查找元素e是否在集合中
 {
     LinkList p;
     p=L->next;
     while(p->next)
     {
         if(e==p->data)
             return 1;
         else p=p->next;
     }
     return 0;
 }

 void ListInsert(LinkList &L,int e)
 {
     LinkList pa,p;
     for(pa=L->next;pa->next;pa=pa->next);
     p=(LinkList)malloc(sizeof(LNode));
     p->data=e;
     p->next=pa->next;     
     if(pa==NULL) pa=p;
     else pa->next=p;
 }

 void Union(LinkList &La,LinkList &Lb,LinkList &Lc)
 {
     LinkList p,q;
     for(p=La->next;p;p=p->next)
         Lc->next->data=p->data;
      for(q=Lb->next;q!=NULL;q=q->next)
         if(LocateElem_L(La,q->data)==0)
             ListInsert(Lc,q->data);
 }

 void PrintLinkList_L(LinkList L)
{
    LNode *p;
    p=L->next;
    while(p!=NULL)
    {
        printf("%d ",p->data);
        p=p->next;
    }
    printf("\n");
}

 void main()
 {
     LinkList La,Lb,Lc;
     CreateLinkList(La,3);
 //    ListInsert(La,6);
  //   PrintLinkList_L(La);
     CreateLinkList(Lb,3);
     Union(La,Lb,Lc);
     PrintLinkList_L(Lc);
 }
搜索更多相关主题的帖子: include 线性表 c语言 元素 
2013-10-06 15:46
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
出现什么问题 ,你总的说明一下吧

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-10-07 08:42
zhaoshirui
Rank: 2
等 级:论坛游民
帖 子:26
专家分:12
注 册:2013-4-7
收藏
得分:0 
回复 2楼 yuccn
应该是内存的问题,我也不是很懂,问题出在那个Union函数上,大神你可以帮我运行下吗?
2013-10-07 09:50
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:10 
Lb数据已是申请了内存的,只要根据情况插入Lc即可,但你的void ListInsert(LinkList &L,int e)又申请了内存。你可参考下
https://bbs.bccn.net/viewthread.php?tid=421442&page=1#pid2352828

www.qunxingw.wang
2013-10-07 10:19
zhaoshirui
Rank: 2
等 级:论坛游民
帖 子:26
专家分:12
注 册:2013-4-7
收藏
得分:0 
谢谢
2013-10-10 18:44
快速回复:用c语言链表实现集合并集时的问题
数据加载中...
 
   



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

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