C语言线性表求集合a和集合b求并集的程序,我这个程序哪里错了?

作者&投稿:壬馥 (若有异议请与网页底部的电邮联系)
c语言 给定两个集合A和B,求集合A和集合B的并集。~

struct Link *Union(struct Link *head1, struct Link *head2)
{
struct Link *p1 = head1->next, *p2 = head2->next;
struct Link *head, *p, *q;
head = (struct Link *)malloc(sizeof(struct Link));
head->next = NULL;
p = head;
while ((p1 != NULL) && (p2 != NULL))
{
q = (struct Link*)malloc(sizeof(struct Link));
q->next = NULL;
if (p1->data == p2->data)
{
q->data = p1->data;
p1 = p1->next;
p2 = p2->next;
}
else if (p1->data data)
{
q->data = p1->data;
p1 = p1->next;
}
else
{
q->data = p2->data;
p2 = p2->next;
}
p->next = q;
p = q;
}
if(p1 != NULL){
while(p1 != NULL){
q = (struct* Link)malloc(sizeof(struct Link));
q->next = NULL;
q->data = p1->data;
p1 = p1->next;
p->next = q;
p = q;
}
}else if(p2 != NULL){
q = (struct* Link)malloc(sizeof(struct Link));
q->next = NULL;
q->data = p2->data;
p2 = p2->next;
p->next = q;
p = q;
}
return head;
}
//适用于p1,p2链表都没有重复data的情况

char c[20];//存储交集的字符int count=0;//统计交集个数for (n=1;n<j;n++)
for (m=1;m<=k;m++)
{
if(a[n]==b[m]) { c[count]=a[n]; count++; }
}
} c[count]='\0';printf("交集为%s",c);

struct Link *Union(struct Link *head1, struct Link *head2)
{
struct Link *p1 = head1->next, *p2 = head2->next;
struct Link *head, *p, *q;
head = (struct Link *)malloc(sizeof(struct Link));
head->next = NULL;
p = head;
while ((p1 != NULL) && (p2 != NULL))
{
q = (struct Link*)malloc(sizeof(struct Link));
q->next = NULL;
if (p1->data == p2->data)
{
q->data = p1->data;
p1 = p1->next;
p2 = p2->next;
}
else if (p1->data < p2->data)
{
q->data = p1->data;
p1 = p1->next;
}
else
{
q->data = p2->data;
p2 = p2->next;
}
p->next = q;
p = q;
}
if(p1 != NULL){
while(p1 != NULL){
q = (struct* Link)malloc(sizeof(struct Link));
q->next = NULL;
q->data = p1->data;
p1 = p1->next;
p->next = q;
p = q;
}
}else if(p2 != NULL){
q = (struct* Link)malloc(sizeof(struct Link));
q->next = NULL;
q->data = p2->data;
p2 = p2->next;
p->next = q;
p = q;
}
return head;
}
//

求高手用c语言编写两个程序(数据结构)
答:{ int *data;int l;}La;typedef struct lb { int *data;int l;}Lb;typedef struct lc { int *data;int l;}Lc;void chushihua(La &a,Lb &b,Lc &c){ int i=0;a.data=new int[100];a.l=0;b.data=new int[100];b.l=0;c.data=new int[100];c.l=0;printf("请输入集合...

谁能给一个简单的线性表操作C语言完整程序?
答:1、线性表有两种:typedef struct { ElemType* elem;int length;int listsize;} SqList;//顺序表 void InitList_Sq (SqList& l) { l.elem=new ElemType [LIST_INIT_SIZE];l.length=0;l.listsize=LIST_INIT_SIZE;}//初始化顺序表 然后SqList La;InitList_Sq(La);就可以 typedef struct ...

线性表的基本操作c语言实现
答:代码如下:头文件:2_1.h ifndef _2_1_H define _2_1_H typedef void SeqList;typedef void SeqListNode;//创建线性表 SeqList * SeqList_Create(int capacity);//销毁线性表 void SeqList_DesTroy(SeqList * list);void SeqList_Clear(SeqList* list);int SeqList_Length(SeqList* ...

关于c语言线性表
答:是不是b的表尾标志需要去掉,才能正确表达ab合并到一起了。比如ab是字符串的话,都有标志\n.合并成一个了当然要去掉一个表尾了。

请问这道c语言的题怎么做
答:int c;c = *a;a = *b;b = c;} 改成这样就行。原来的程序之所以不能交换变量的值,是因为那样也跟传递变量差不多,也是值交换,只是值是指针(地址)而已。你可以按照原来的程序打印一下p和q的值,在交换之前、之后分别打印,使用如下代码:printf("%p,%p\n", p, q)。%p表示输出指针地址 ...

A,B和C为三个递增有序的线性表,现要求对A表作如下操作:删去那些既在...
答:cout<<a[t];a[t]=a[t+1];} n--;} } } for(j=0;j<p;j++) //用已经和b[]数组比较后的集合a[]继续和c[]集合进行比较,{ //并删除其中相同的元素 for(i=0;i<n;i++){ if(a[i]!=c[j])continue; //同上 else { for(t=i;t<n-1;t++) //同上 ...

数据结构设有线性表LA(3,5,8,110)和LB(2,6,8,9,11,15,20)求新集合?
答:include <stdio.h> include <stdlib.h> define list_init_size 100 define listincrement 10 typedef struct { int *elem;int length;int listsize;} sqlist;int initsqlist (sqlist *l)//初始化 { l->elem=(int *)malloc(list_init_size*sizeof(int));if(!l->elem)exit(0);l->...

线性表及其应用(多项式相加、相乘)---根据程序画出流程图及对每句程 ...
答:if( c ) //将两个链表相加后的每个项 都放入新链表中 { pc->next=new PN;pc=pc->next;pc->c=c;pc->e=e;} } pc->next=NULL;return hc; //将新链表的头结点指针返回 } PN *mulxmul(PN *ha, PN *hb) //这个函数将a表中每个项都掉用一次onexmul函数,最终实现多项式a与b...

请用C语言编程实现 1. 已知线性表LA和LB中的数据元素按值非递增有序排 ...
答:楼上的那个办法是正确的 我这个就是不用再次排序 逻辑判断比较和2个数组元素的合并都放在一起了 试试对不对 网吧里没有工具 很是难受 include <stdio.h> void main(){ int a[]={1,8,11,14,25};int b[]={1,3,5,7,9,11,13,14,15,18,33};int c[16];int a1=0,b1=0;for(...

一个数据结构线性表方面的题,请用C语言编出来,并能实现,望有志者帮...
答:} rt->next =NULL;return rc;} void del(node *a)/*删除表*/ { if (a->next ) del(a->next );free(a);} int main(void){ node *la,*lb,*lc;int a[]={3,5,7,8,9,10},b[]={2,3,4,5,6,7};la=lb=lc=NULL;la=init(a,6);lb=init(b,6);lc=mer(la,lb);...