早教吧作业答案频道 -->其他-->
c语言问题,急急急!关于链表的!题目是这样的:链表练习:求集合的差:假设集合A用单链表LA表示,集合B用单链表LB表示,设计算法求两个集合的差,即A-B。提示:由集合运算的规则可
题目详情
c语言问题,急急急!关于链表的!
题目是这样的:
链表练习:
求集合的差:假设集合A用单链表LA表示,集合B用单链表LB表示,设计算法求两个集合的差,即A-B。
提示:由集合运算的规则可知,集合的差A-B中包含所有属于集合A而不属于集合B的元素。具体做法是,对于集合A中的每个元素e,在集合B的链表LB中进行查找,若存在与e相同的元素,则从LA中将其删除
题目是这样的:
链表练习:
求集合的差:假设集合A用单链表LA表示,集合B用单链表LB表示,设计算法求两个集合的差,即A-B。
提示:由集合运算的规则可知,集合的差A-B中包含所有属于集合A而不属于集合B的元素。具体做法是,对于集合A中的每个元素e,在集合B的链表LB中进行查找,若存在与e相同的元素,则从LA中将其删除
▼优质解答
答案和解析
#include <stdio.h>
#include <stdlib.h>
typedef struct list{
int elem;//存数链表节点的元素值
struct list *next;//指向下一节点
}LIST;
LIST *createlist(int n)
{
LIST *head,*p,*p1;
int i;
head=(LIST *)malloc(sizeof(LIST));
p=head;
scanf("%d",&(p->elem));
p->next=NULL;
for(i=1;i<n;i++)
{
p1=(LIST *)malloc(sizeof(LIST));
scanf("%d",&(p1->elem));
p1->next=NULL;
p->next=p1;
p=p1;
}
return head;
}
LIST *A_B(LIST *A,LIST *B)//计算A-B,计算结果保存在A中
{
LIST *pa,*pa_prev,*pb;
int e,flag;
pa=A;
pa_prev=A;
while(pa!=NULL)//遍历链表A中的每一个元素
{
flag=0;
e=pa->elem;
pb=B;//对A中的每一个元素e,都从LB的表头开始查找
while(pb!=NULL)
{
if (pb->elem==e) //若A中的元素B也有,则在A中删除该元素
{
if (pa==A) //pa是表头
{
A=pa->next;
pa_prev=pa->next;
pa=pa->next;
flag=1;
}
else if(pa->next==NULL)//pa是表尾
{
pa=NULL;
pa_prev->next=pa;
flag=1;
}
else//非表头元素和表尾元素
{
pa_prev->next=pa->next;
pa=pa->next;
flag=1;
}
break;
}
else pb=pb->next;
}
if (flag==0) {pa_prev=pa;pa=pa->next;}
}
return A;
}
int main()
{
LIST *LA,*LB;
LIST *p;
int num;
printf("请输入链表A的长度:");
scanf("%d",&num);
printf("请输入链表A的元素,中间用空格隔开:");
LA=createlist(num);
printf("\n请输入链表B的长度:");
scanf("%d",&num);
printf("请输入链表B的元素,中间用空格隔开:");
LB=createlist(num);
LA=A_B(LA,LB);//计算集合差
p=LA;//输出A-B的结果
printf("\nLA-LB=");
while(p!=NULL)
{
printf("%4d",p->elem);
p=p->next;
}
return 0;
printf("\n");
}
程序的运行结果:
若满意,望采纳!
看了 c语言问题,急急急!关于链表...的网友还看了以下:
某同学想通过一个多用表中的欧姆挡,直接去测量某电压表的内阻(大约为几十千欧),欧姆表共有(×1档) 2020-04-06 …
为什么我用万用表侧的我的电阻是0.6MΩ?我用两只手分别握住两个表针,测得电阻为0.6MΩ,不是人 2020-04-07 …
数字万用表测电流如何读数我用数字万用表侧的一个充电手电的充电电流,红表笔接mA,黑表笔接COM,档 2020-05-14 …
语文课代表的责任请用表格的方式来表示、、谢谢啊、、初一的语文课代表工作表、、解释一下、、就是责任和 2020-05-17 …
如何突破用x的代数式表示y在教学设计中如何突破这个重难点?若用表格的形式列出一个表格:给出一些x( 2020-05-21 …
122人去划船,大船6人/艘,30元/艘,小船4人/艘,24元/艘.请利用画表格的方式,写出所有方 2020-06-28 …
关于外国人填表格的习惯——打叉在中国做选择题,如果要选择一个选项时,我们都是用“√”或“○”表示的 2020-07-08 …
表1中A2引用表2的C3,表1A6引用C4,表1A10引用C5,以此类推公式怎么写? 2020-07-09 …
数字万用表测电阻我用数字万用表电阻档测电容,第一次用万用表放在电容的两端万用表上的读数会变,当把万 2020-07-12 …
下面是某同学家某月的电费单据:***市供电局用电客户电费通知单2006年03月客户名***地址** 2020-07-18 …